【发布时间】:2014-11-25 17:41:51
【问题描述】:
我正在编写一个注册推送通知的 iOS 应用程序。我需要定期/每当服务器请求时发送设备令牌。
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
//send to server
}
但这仅在应用启动时发生。除了启动之外,如何在应用程序的其他部分获取此回调,以便它到达上述代码并将 deviceToken 发送到我的服务器?
我正在考虑这个(必须支持iOS8和更低)
if( server requests token )
{
if( [application respondsToSelector:@selector(registerUserNotificationSettings) ] )
{
[application registerForRemoteNotifications];
}
else
{
[application registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert );
}
}
这是在应用程序中间(即应用程序启动后)再次获取 deviceToken 的正确方法。请帮忙
【问题讨论】:
-
您在“定期/每当服务器请求时发送设备令牌”方面遇到了严重问题。
-
@erkanyildiz 我知道,但定期间隔不太规律(一两个月发生一次),服务器设计更改不是我能做的。时间限制。
-
这里有一个非常严重的设计问题。我不知道为什么除了应用启动之外还需要发送令牌。如果令牌更改(重新安装、在另一台设备上恢复、过期等),应用程序启动可以将新的令牌发送到服务器。您无需让应用定期显式发送令牌。顺便说一句,静默推送是您的服务器可以让您的应用程序在需要时发送一些数据的唯一方法。但这仅在您已经拥有有效令牌时才有效。
标签: ios xcode ios7 ios8 push-notification