推送通知代码执行(强制退出应用程序)

时间:2015-08-14 18:33:08

标签: ios push-notification apple-push-notifications

我想知道像Whatsapp这样的应用程序如何能够向邮件的发件人发送送达回执(双绿色支票)。

我已经看到即使您强行退出Whatsapp(使用应用程序任务切换器并轻扫应用程序),发件人仍然会在收到推送通知时收到送货回执(双绿色检查)电话。显然,他们能够在收到推送通知时执行代码(向后端发出请求,通知交付)。

由于iOS7可以发送带有“content-available”的推送通知有效负载:1,这使得通知的接收者能够执行用户代码,因此,首先我认为他们正在使用此功能。 但是,如果用户强制退出应用程序,则在接收通知时不会执行用户代码。因此,我无法模仿Whatsapp的行为。

我启用了功能>后台模式并检查了远程通知。

我正在用这种方法处理通知:

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

我正在使用此有效负载发送通知:

{
    "aps":{
            "alert":"Hello world",
            "sound":"MySound.wav",
            "content-available":1
    }
}

我已经查过:

我也读过有关PushKit的内容(虽然我没有尝试过),这可能对此有所帮助,但我的理解是应用程序需要是一个VOIP应用程序。显然,我不希望我的应用程序上的VOIP只是在收到推送通知时执行代码。

感谢。

1 个答案:

答案 0 :(得分:5)

您刚刚在说明中回答了您的问题。

  1. 如果强制退出,则无法通过常规推送通知唤醒应用。

    请参阅App Programming Guide for iOS

      

    在大多数情况下,系统在强制使用后不会重新启动应用   退出用户。一个例外是位置应用程序,在iOS 8和iOS中   之后被用户强制退出后重新启动。其他   但是,用户必须明确启动应用程序或重新启动应用程序   应用程序之前的设备可以自动启动进入   系统背景。

  2. VoIP推送通知可以唤醒应用,即使它是强行退出。

    请参阅Voice Over IP (VoIP) Best Practices

      

    如果在VoIP时它未运行,您的应用会自动重新启动   收到了推。

  3. WhatsApp中的两个蓝色标记表示收件人阅读邮件。如果您收到两个蓝色标记,就在收到推送通知后,这是WhatsApp中的设计错误或错误,因为您无法判断用户是否真正阅读了通知。如果您获得两个灰色标记,这只是意味着消息已传递到设备。再次,如果你得到两个灰色标记,就在收到推送通知并且应用程序强行退出之后,WhatsApp(错误)使用VoIP推送,或者他们只是假设推送是交付或将交付。