我目前正在尝试在WKWebView
中处理日历和钱包事件。事件由打开.ics或.passkey文件的按钮触发-在Safari中打开相应的窗口(保存日历事件/添加到钱包),但这在我的Web视图中不起作用。
我已经试过利用
func webView(_ webView: WKWebView,
decidePolicyFor navigationAction: WKNavigationAction,
decisionHandler: @escaping (WKNavigationActionPolicy) -> Swift.Void) {}
字符串
但没有成功。我得到的原始数据作为URL例如:
data:text/calendar; int sets = int-8; base64,QkVHSU46VkNBTEVOREFSDQpWRVJTSU9OOjIuMA0KQkVHSU46VkVWRU5UDQpEVFNUQVJUOjIwM jMxMjE1VDA3MDAWMFoNCkRURU5EOjIwMjMxMjE2VDE5MDAWMFoNClNVTU1BUlk6SUFBIE1vYmlsac@R5IDIwMjMNCkxPQ0FUSU9OOkhvY2hicsO8Y2tlbnN0cmHDn2UgNlwsIDgwMzMxIE3DvG 5jaGVuXCwgREUNCKVORDpWRVZFTlQNCkVORDpWQ0FMRU5EQVINCg ==
我该怎么处理?
我找不到太多关于这方面的文件。
2条答案
按热度按时间vbopmzt11#
看起来你是想把信息从webview传递到你的原生Swift代码中。你有几个选择:
1.您可以使用以下信息执行URL重定向(看起来你已经在尝试了)。最好为这些重定向使用一个设置方案,比如“myAppName”。然后在你的决策处理程序中,(问题中的函数)检查方案,如果是“myAppName”,则返回
decisionHandler(.cancel)
,因此URL未加载。(base64解码),然后是create a calendar event。1.您可以在客户端使用WKScriptMessageHandler来捕获从您的网站发送的消息。从这些消息中解析数据,然后将其用于create a calendar event。您可以在this blog post中找到有关此方法的更多信息。
liwlm1x92#
如果你有一个数据
URL
(如你的问题所示),那么你可以用下面的代码将其转换为字符串表示:字符串
此代码的输出为:
型
这个字符串代表一个标准的“ics”日历条目。你可以在你认为合适的时候使用它。