将信息从Angular4(WKWebView)传递给Swift

时间:2017-08-26 15:47:09

标签: swift angular typescript wkwebview wkwebviewconfiguration

您好我有一个网络应用程序,我将其包装到WKWebView中,以通过Google Play和App Store进行分发。

为了让它按照我想要的方式工作,我需要能够在Angular和Swift之间传递一些文本字符串。

来自Angular的信息传递 - >斯威夫特这是我现在要解决的最重要的一步,我花了几天时间搜索可能的解决方案,但是关于Angular的文章并不多。

我发现一些关于代码语法似乎有些过时,但大多数文章都涵盖了从JavaScript到Swift的传递信息,而不是TypeScript / Angular4到Swift。

我的最佳用例是,当用户在WKWebView中以登录形式输入他的电子邮件地址时,我需要在Swift中检索该电子邮件,以便获取用户正在记录的内容in,并将该电子邮件地址映射到登录设备的Firebase注册令牌(以便提供推送消息)。

有人有解决方案吗?例如,我将如何在Web应用程序中检索以下表单中输入的文本;

<input class="form-control ng-dirty ng-valid ng-touched" formcontrolname="email" id="email" type="email">

编辑:我不认为这个问题是重复的,因为&#34; window.webkit.messageHandler&#34;在尝试在Angular / TypeScript中实现它时,函数在编译时提供错误。一旦我的开发人员将邮件发送给我,我将提供示例代码和编译错误输出。

1 个答案:

答案 0 :(得分:0)

我最后通过注入一个脚本来设置和读取来自WKWebView Local存储的数据来解决这个问题。

这允许我获取由网络应用设置的令牌和字符串,并允许我通过本地存储将信息传递到网络应用。

以下行将设置一个名为&#39; device&#39;使用tokenFirebase变量的内容,它还会读取&#39;令牌&#39;以及&#39; userId&#39;由Angular Web应用程序设置的本地存储的内容:

let addCookieScript="localStorage.setItem('device', '\(self.tokenFirebase)');\nconsole.log(localStorage.getItem('token'));\nconsole.log(localStorage.getItem('userId'));\n"