如何在WKWebView中处理日历和钱包事件

问题描述 投票:0回答:1

我目前正在尝试在

WKWebView
中处理日历和钱包事件。这些事件由打开 .ics 或 .passkey 文件的按钮触发 - 在 Safari 中打开相应的窗口(保存日历事件/添加到钱包),但这在我的网络视图中不起作用。

我已经尝试使用

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Swift.Void) {}
,但没有成功。我以 URL 形式获取原始数据(例如:
"data:text/calendar;charset=utf-8;base64,QkVHSU46VkNBTEVOREFSDQpWRVJTSU9OOjIuMA0KQkVHSU46VkVWRU5UDQpEVFNUQVJUOjIwMjMxMjE1VDA3MDAwMFoNCkRURU5EOjIwMjMxMjE2VDE5MDAwMFoNClNVTU1BUlk6SUFBIE1vYmlsaXR5IDIwMjMNCkxPQ0FUSU9OOkhvY2hicsO8Y2tlbnN0cmHDn2UgNlwsIDgwMzMxIE3DvG5jaGVuXCwgREUNCkVORDpWRVZFTlQNCkVORDpWQ0FMRU5EQVINCg=="
) - 我应该如何处理这个问题?

我找不到太多关于此的文档。

提前致谢, 巴斯蒂安

swift wkwebview icalendar
1个回答
0
投票

您似乎正在尝试将信息从 webview 传递到您的本机 Swift 代码。您有几个选择:

  1. 您可以使用该信息执行 URL 重定向(看起来您已经在尝试执行此操作)。最好对这些重定向使用一组方案,例如“myAppName”。然后在您的决策处理程序(问题中的函数)中检查方案,如果它是“myAppName”,则返回

    decisionHandler(.cancel)
    ,因此不会加载 URL。然后,您从 URL 中提取信息(base64 对其进行解码),然后创建日历事件

  2. 您可以在客户端使用WKScriptMessageHandler来捕获从您的网站发送的消息。解析这些消息中的数据,然后使用它来创建日历事件。您可以在这篇博文中找到有关此方法的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.