【问题标题】:Push notifications in hybrid mobile app在混合移动应用程序中推送通知
【发布时间】:2015-09-01 01:52:00
【问题描述】:

我的应用是一款混合手机。它有一个原生 swift 代码的视图控制器,里面有一个加载我的 web 应用程序的 web 视图。我有点困惑如何为这种结构实现推送通知。我现在想到的是订阅网络应用程序内的基于云的频道(例如解析或推送),当它收到消息时,它会使设备显示推送通知。它看起来像

  1. 原生 ios 包装器将订阅频道。
  2. Webview 将向频道推送消息,指定用户 ID。
  3. 原生 ios 包装器在订阅频道后收到消息。

但是,在第 3 步中,只有当他的 userId 与消息中指定的 userId 匹配时,他才会收到通知。如何将驻留在 Web 应用程序内的 userId(已登录用户)与本机包装器连接起来?

【问题讨论】:

  • 用简单的英语,您是否正在寻找一种让 Webview 中的 JavaScript 以某种方式与 iOS 应用程序通信的技术?

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


【解决方案1】:

假设您正在查看托管网络应用程序和主机 UIWebView 之间的来回通信。

使用 Javascript 通信

在采用UIWebViewDelegate 的类中(以确保您的Web 应用程序完全加载),调用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 上查找更多详细信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 1970-01-01
    相关资源
    最近更新 更多