我的应用是混合移动设备。它有一个本机swift代码中的View Controller,里面有一个加载我的web应用程序的webview。我有点困惑如何为这种结构实现推送通知。我现在想到的是在Web应用程序内订阅基于云的频道(例如,解析或推送),当它收到消息时,它会让设备显示推送通知。它看起来像
但是,在步骤3中,只有当userId与消息中指定的userId匹配时,他才应该收到通知。如何将驻留在Web应用程序中的userId(已登录用户)与本机包装器连接?
答案 0 :(得分:0)
假设您正在寻找托管网络应用与主机UIWebView
之间的来回通信。
在采用UIWebViewDelegate
的类中(为确保您的网络应用已完全加载),请调用javascript
方法:
class ViewController: UIViewController, UIWebViewDelegate {
@IBOutlet var webView: UIWebView!
override func viewDidLoad() {
super.viewDidLoad()
let path = Bundle.main.path(forResource: "SO-32322397",
ofType: "html")
let url = URL(fileURLWithPath: path!, isDirectory: false)
let request = URLRequest(url: url)
self.webView.loadRequest(request)
}
//MARK: UIWebViewDelegate
func webViewDidFinishLoad(_ webView: UIWebView) {
let userID =
webView.stringByEvaluatingJavaScript(from: "userID()")
if let userID = userID {
print("userID = \(userID)")
}
}
}
►在GitHub上找到此解决方案,并在Swift Recipes上找到其他详细信息。