2015-08-14 115 views
2

我想知道Whatsapp这样的应用程序如何能够向邮件的发件人发送邮件收据(双绿色检查)。推送通知代码执行(强制退出应用程序)

即使您强制退出Whatsapp(使用应用程序任务切换器并将应用程序划过应用程序),发件人仍会在接收到推送通知时收到送达回执(双绿色检查)电话。很明显,他们能够在收到推送通知时执行代码(向后端发出请求,通知交付)。

由于iOS7可以发送推送通知有效载荷与“内容可用”: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在接收推送通知时执行代码。

谢谢。

回答

2

你刚刚在你的描述中回答了你的问题。

  1. 有没有办法通过常规的推送通知来唤醒应用程序,如果是强制退出。

    App Programming Guide for iOS

    在大多数情况下,系统不重新启动应用程序后,他们是由用户退出力 。一个例外是位置应用程序,它在iOS 8和 之后在被用户强制退出后重新启动。但是,在其他 的情况下,用户必须明确启动应用程序或重新启动设备,然后系统才能将应用程序自动启动到 后台。

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

    Voice Over IP (VoIP) Best Practices:如果当接收到的VoIP 推它没有运行

    您的应用程序会自动重新启动。

  3. 两个在WhatsApp的蓝色马克意味着,收件人阅读邮件。如果在收到推送通知之后收到两个蓝色标记,则这是WhatsApp中的设计错误或错误,因为您无法确定用户是否实际读取了通知。如果你得到两个标记,那就意味着消息被传送到设备。同样,如果您收到推送通知并且应用程序强制退出后两个灰色分,那么WhatsApp是(误)使用VoIP推送,或者他们只是假设推送已交付或将交付。

+3

谢谢Baris。无论应用程序是否强制退出,我都会收到两个绿色(灰色)标记,只是收到推送通知。那么我会猜测他们正在使用VoIP。我做了一些更多的研究和测试,发送消息给已安装Whatsapp的iOS7上没有VoIP推送的设备(PushKit适用于iOS> = 8),在这种情况下,我没有得到两个绿色(灰色)标记,所以我可以得出结论,我的理论(他们使用PushKit VoIP推送)是正确的。 – fernandospr