【问题标题】:How to handle Push on App not running state?如何处理 Push on App 未运行状态?
【发布时间】:2017-12-05 20:51:39
【问题描述】:

是否可以根据推送通知内容打开iOS App?我相信这是不可能的。还有其他方法吗?我相信我们可以在 iOS10 中使用小部件,对吧?请提出一些好的解决方案?

谢谢!

【问题讨论】:

    标签: ios objective-c iphone push-notification ios10


    【解决方案1】:

    只要您的有效负载具有content-available:1,您的应用就会在它到达后立即在后台状态中被调用,并将调用application(_:didReceiveRemoteNotification:fetchCompletionHandler:)。如果用户手动终止应用程序,它不会被调用。 (这不会启动您的应用。但它需要启动您的应用)

    话虽如此,如果您的应用(由用户)终止但用户点击了通知,那么您的应用将从 didFinishLaunching...delegate 方法启动

    【讨论】:

    • 好的,谢谢!因此,如果没有用户操作,就不可能在推送接收时启动应用程序,对吧?
    • @user1591698 您能准确定义启动的含义吗?您的意思是打开并带来并神奇地将其带到前台吗?或者你的意思是让它在后台启动并执行一些任务?
    • 对不起,我需要做你的第一点(只需打开并神奇地将其带到前台)
    • 这几乎不会发生。想象一下,如果确实如此,那么您将在浏览过程中突然打开您的银行应用程序。不过,如果您的应用程序有 VOIP,那么当有人打电话给您时,所有人都可以在您的屏幕上弹出。
    • 是的 同意,或者,我们可以使用应用程序扩展 - 在应用程序处于后台状态(挂起状态 - 我们可以利用远程通知使我们的应用程序从挂起状态到后台状态)。我希望它会起作用。
    【解决方案2】:

    每当用户点击推送通知时,应用程序就会从未运行状态启动到 AppDelegate 中的运行状态

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    
    }
    in this function you can check application is launch from push or application icon 
    
    var notification: [AnyHashable: Any]? = (launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey] as? [AnyHashable: Any])
    if notification != nil {
        print("app received notification from remote\(notification)")
        application(application, didReceiveRemoteNotification: notification)
    }
    else {
        print("app did not receive notification")
    }
    

    【讨论】:

    • 好的,谢谢!是否可以在不点击应用未运行状态的情况下打开应用?
    • 用户可以从应用程序图标打开应用程序,如果您需要一个后端人员来跟踪所有通知并向您发送上次未读推送通知的状态
    【解决方案3】:

    是的,我们无法在推送通知上打开 ios 应用程序,但我们可以在推送通知上唤醒应用程序。它称为 VOIP 通知。您可以从下面的链接https://github.com/hasyapanchasara/PushKit_SilentPushNotification

    获得更多信息

    【讨论】:

    • 好的,谢谢!会检查的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-14
    • 1970-01-01
    • 2015-03-28
    • 2011-09-16
    相关资源
    最近更新 更多