在混合移动应用中推送通知

时间:2015-09-01 01:52:00

标签: ios push-notification hybrid-mobile-app

我的应用是混合移动设备。它有一个本机swift代码中的View Controller,里面有一个加载我的web应用程序的webview。我有点困惑如何为这种结构实现推送通知。我现在想到的是在Web应用程序内订阅基于云的频道(例如,解析或推送),当它收到消息时,它会让设备显示推送通知。它看起来像

  1. 本机ios包装器将订阅一个频道。
  2. Webview会将消息推送到频道,指定userId。
  3. 本机ios包装器在订阅频道后获取消息。
  4. 但是,在步骤3中,只有当userId与消息中指定的userId匹配时,他才应该收到通知。如何将驻留在Web应用程序中的userId(已登录用户)与本机包装器连接?

1 个答案:

答案 0 :(得分:0)

假设您正在寻找托管网络应用与主机UIWebView之间的来回通信。

与Javascript沟通

在采用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上找到其他详细信息。