在一个使用远程通知的 iOS 应用程序(来自 Parse.com)中,在花了一些时间研究这个主题之后,我得出的结论是我不应该在后台使用远程通知或者可能使用静默通知。
但是无声通知
看起来相当复杂。
例如:
在此代码中:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSLog(@"application:didReceiveRemoteNotification:fetchCompletionHandler:");
completionHandler(UIBackgroundFetchResultNewData);
}
添加最后一行 (completionHandler) 可以防止出现错误消息。 但这到底是做什么的?这个completionHandler从哪里来?
我从未接触过无声通知,我有点迷失在那里。
最佳答案
最后一行是完成 block ,当您的应用程序处于后台时将调用该 block 。
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
当您的应用程序在后台或前台模式下运行时,将调用上述方法。
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
如果您启用了远程通知后台模式,系统会启动您的应用(或将其从挂起状态唤醒)并在远程通知到达时将其置于后台状态。
当远程通知到达时,系统向用户显示通知并在后台启动应用程序(如果需要)以便它可以调用此方法。在后台启动您的应用可以让您有时间处理通知并下载与其相关的任何数据,从而最大限度地缩短通知到达和向用户显示该数据之间的时间。
如果您需要更多说明,请告诉我。
关于ios - (无声)RemoteNotification,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30478101/