2017-08-26 79 views
0

嗨我有一個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

回答

0

我最終通過注入腳本來設置和讀取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"