点击推送通知时打开浏览器

ila*_*lan 5 apple-push-notifications ios appdelegate swift

我想在用户点击推送通知时打开浏览器.

在我的应用代表中,我有:

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {    
    var json = remoteNotif[UIApplicationLaunchOptionsRemoteNotificationKey] as! NSDictionary

    storyboard = UIStoryboard(name: "Main", bundle: nil)
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)
    let navC = storyboard.instantiateViewControllerWithIdentifier("mainNav") as! NavViewController

    let data = json.objectForKey("data") as! NSDictionary
    let url = data.objectForKey("url") as! String
    UIApplication.sharedApplication().openURL(NSURL(string: url)!)

    self.window?.rootViewController = navC
    self.window?.makeKeyAndVisible() 
}
Run Code Online (Sandbox Code Playgroud)

当用户点击推送通知时,这会给我一个黑屏20秒,然后打开应用程序,然后打开浏览器.如何只在浏览器上打开推送通知,或者至少打开超过20秒?

谢谢.

Liv*_*u R 0

您无法直接打开另一个应用程序 - 您只能使用快速应用程序切换。20 秒的黑屏听起来很奇怪 - 在多个设备上是否一致?

如果是这样 - 你真的应该运行仪器并看看哪些功能需要这么长时间才能工作。听起来您的应用程序出现之前的加载由于某种原因非常繁重。

如果 Instruments 没有给你任何东西(我很确定它会),你应该看看你再次链接应用程序的内容 - 它是一个巨大的框架列表吗?

作为一个快速技巧,以防加载情节提要是最重要的部分 - 您可以尝试在加载情节提要之前执行 openURL 本身。

确保应用程序委托中的 shouldOpenURL 方法非常高效,并且不执行任何同步网络任务或类似的事情。