有时苹果推送通知没有收到
Some time apple push notification not getting
我正在 iOS 8 中开发一个 iOS 应用程序。它有一个名为消息发送的模块。该模块是在 Apple 推送通知的帮助下开发的。我的问题是有一段时间我们没有收到推送消息到 iOS 设备。服务器已成功将消息发送到 APNS。是否存在任何 APNS 可靠性问题?
我正在使用以下步骤:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)])
{
UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
return YES;
}
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
[application registerForRemoteNotifications];
}
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
}
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
}
- APN 不可靠,不能 100% 保证到达客户端。
- 根据 Apple 的文档,APN 是最大努力,所以很多时候它们可能达不到。
通过answer
Samraan 没有错,Apple 不保证交货,但根据我的经验,它非常可靠。从您在此处发布的代码中我确实注意到,您对 didReceiveRemoteNotification
的实现是空的。当您的应用处于活动状态并收到推送通知时,不会显示系统横幅或警报。相反,通知会传送到 didReceiveRemoteNotification
回调,供您的应用直接处理。如果您对该函数的定义为空,并且向该设备发送通知,它可能看起来好像通知从未到达,但它只是被隐藏了。
您可以尝试向此回调添加一个 UIAlertView 弹出窗口,以查明这是否是您的情况。
我正在 iOS 8 中开发一个 iOS 应用程序。它有一个名为消息发送的模块。该模块是在 Apple 推送通知的帮助下开发的。我的问题是有一段时间我们没有收到推送消息到 iOS 设备。服务器已成功将消息发送到 APNS。是否存在任何 APNS 可靠性问题?
我正在使用以下步骤:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)])
{
UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeSound categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}
return YES;
}
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
[application registerForRemoteNotifications];
}
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
}
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
}
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
}
- APN 不可靠,不能 100% 保证到达客户端。
- 根据 Apple 的文档,APN 是最大努力,所以很多时候它们可能达不到。
通过answer
Samraan 没有错,Apple 不保证交货,但根据我的经验,它非常可靠。从您在此处发布的代码中我确实注意到,您对 didReceiveRemoteNotification
的实现是空的。当您的应用处于活动状态并收到推送通知时,不会显示系统横幅或警报。相反,通知会传送到 didReceiveRemoteNotification
回调,供您的应用直接处理。如果您对该函数的定义为空,并且向该设备发送通知,它可能看起来好像通知从未到达,但它只是被隐藏了。
您可以尝试向此回调添加一个 UIAlertView 弹出窗口,以查明这是否是您的情况。