我想知道诸如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仅执行代码。
谢谢。
最佳答案
您只是在描述中回答了您的问题。
参见App Programming Guide for iOS:
在大多数情况下,强制使用后系统不会重新启动应用程序
由用户退出。定位应用是一个例外,它在iOS 8和
后来被用户强行退出后重新启动。其他
但是,在这种情况下,用户必须明确启动应用程序或重新启动
设备可以在应用自动启动之前
系统的背景。
参见Voice Over IP (VoIP) Best Practices:
如果您的应用在VoIP时未运行,则会自动重新启动
收到推送。