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

Pass info from Angular4 (WKWebView) to Swift

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

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

这是来自 Angular -> Swift 的信息传递,这是我现在要解决的最重要的一步,我花了几天时间在谷歌上搜索可能的解决方案,但是Angular.

的文章并不多

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

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

有人对此有解决方案吗?例如,我将如何检索在网络应用程序中以以下形式输入的文本;

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

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

我最终通过注入脚本来设置和读取 WKWebView 本地存储中的数据解决了这个问题。

这允许我获取网络应用程序设置的令牌和字符串,并且我还可以通过本地存储将信息传递给网络应用程序。

以下行将使用 tokenFirebase 变量的内容设置一个名为 'device' 的键,它还将读取本地存储的 'token' 和 'userId' 内容,它们是由 Angular 网络应用程序设置:

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