Ios 静默推送通知不起作用
我正在尝试实现静默推送通知。我需要将静默推送通知数据保存在应用程序中的数据库中,以便在用户使用应用程序时向用户显示未看到的通知及其计数。 我使用的是Xcode 6.1,目标是iOS 7及更高版本的设备。目前,我正在使用开发证书进行推送通知。 我已经在目标项目功能的后台模式中检查了远程通知,并且信息列表的后台模式在所需的后台模式中具有“应用程序下载内容以响应推送通知” 在我的Ios 静默推送通知不起作用,ios,objective-c,iphone,apple-push-notifications,Ios,Objective C,Iphone,Apple Push Notifications,我正在尝试实现静默推送通知。我需要将静默推送通知数据保存在应用程序中的数据库中,以便在用户使用应用程序时向用户显示未看到的通知及其计数。 我使用的是Xcode 6.1,目标是iOS 7及更高版本的设备。目前,我正在使用开发证书进行推送通知。 我已经在目标项目功能的后台模式中检查了远程通知,并且信息列表的后台模式在所需的后台模式中具有“应用程序下载内容以响应推送通知” 在我的AppDelegate.m中,我可以注册远程通知并获取设备令牌。现在,当我发送推送通知时,我的委托方法在应用程序位于前台时被
AppDelegate.m
中,我可以注册远程通知并获取设备令牌。现在,当我发送推送通知时,我的委托方法在应用程序位于前台时被调用,但当应用程序位于后台/未运行时,它不会被调用,尽管我在横幅中收到推送通知
我已经在AppDelegate.m
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler{
NSLog(@"Received push notification");
}
我发送的有效负载如下所示:
{
aps: {
content-available: 1
}
}
我试着添加优先级、声音等,但没有任何帮助。
有人能帮我找出当应用程序在后台运行或未运行时,如何在应用程序中保存静默推送通知数据吗?
请帮助我解决此问题。因此,您肯定能够在后台接收它们,但请注意,如果用户故意从任务切换程序中终止您的应用程序,那么它将无法再接收它们 在iOS 7及以上版本中,回调正如您所说,但在此之前是
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
看起来你的目标不太可能是iOS 6,所以我会选择格式不正确的推送包或后台推送设置不正确。你是否将apps info.plistUIBackgroundModes设置为remote Notificationon 然后还添加此方法以帮助您进行调试
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))handler
{
//Success
handler(UIBackgroundFetchResultNewData);
}
静默推送通知不同于面向用户的通知。它们被视为低优先级,并且受APN和iOS的速率限制。在实践中,这意味着静默通知只能很少发送,并且在发送到应用程序之前可能会有很长的延迟 您描述的行为可能是设备上的唤醒速率限制器。iOS限制启动应用程序以执行后台工作的频率。这是为了防止滥用行为——一些应用程序可能希望在后台永远保持活力,耗尽电池电量 当连接Xcode时,唤醒速率限制器不处于活动状态,这使得静默通知看起来是立即发送的 My有一个很长的章节描述利率限制以及如何使用它们