从Angular4(WKWebView)传递信息到Swift

从Angular4(WKWebView)传递信息到Swift

问题描述:

嗨我有一个Web应用程序,我将其包装到WKWebView中以通过Google Play和App Store进行分发。从Angular4(WKWebView)传递信息到Swift

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

这是来自Angular的信息传递 - > Swift,这是我现在要解决的最重要的一步,我已经花了几天的时间搜索可能的解决方案,但是没有很多关于Angular的文章。

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

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

有没有人有解决方案?例如,我将如何去检索在Web应用程序中以下列形式输入的文本;

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

编辑:我不相信这个问题是重复的“window.webkit.messageHandler”功能在编译努力实现它在角/打字稿时提供错误。一旦我的开发人员可以邮寄给我,我将提供示例代码和编译错误输出。

+0

typescript编译为javascript,并且您将在运行时拥有javascript。 javascript解决方案应该是你正在寻找的。 – toskv

+0

Angular应用程序的开发人员告诉我这很棘手,但我确实建议他尝试使用“window.webkit.messageHandler”函数,我想我必须再次问他。 – lundzern

+0

[如何将数据从Javascript传递到WKWebView中的Swift?](https://stackoverflow.com/questions/35574539/how-to-pass-data-from-javascript-to-swift-within-a -wkwebview) – toskv

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

这使我可以拿起由网络应用程序设置的令牌和字符串,也可以通过本地存储将信息传递给Web应用程序。

下面一行将设置一个名为'device'的关键字,其中包含tokenFirebase变量的内容,它还将读取由Angular Web应用程序设置的本地存储的'token'和'userId'内容:

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