我想添加对Apple推送通知发送到iOS应用程序的支持。这是一个新闻应用,因此每次发生重要新闻事件时,我都会向所有安装该应用的用户和设备广播推送通知。
根据Apple Push Notification Service documentation,在图3-3中,客户端应用程序必须将设备令牌发送给提供商。
为了能够将Push Notifications发送到安装了我的应用程序的所有设备,我是否必须创建一个web服务,在注册通知时从客户端应用程序接收和存储设备令牌?为了发送推送通知,我需要一个令牌和有效负载。我想向所有用户发送推送通知,通常是数千名用户。那么我怎样才能最好地访问设备令牌,以便我可以将推送通知发送给所有用户?
答案 0 :(得分:1)
是。您必须创建一个Web服务,以便将推送通知发送到使用您的应用程序的任何设备。就设备令牌而言,您可以使用以下代码获取它们:
- (void)applicationDidFinishLaunching:(UIApplication *)app {
// other setup tasks here....
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
}
// Delegation methods
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
const void *devTokenBytes = [devToken bytes];
self.registered = YES;
[self sendProviderDeviceToken:devTokenBytes]; // custom method
}
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
NSLog(@"Error in registration. Error: %@", err);
}
您需要在AppDelegate.m
中写这个,这将获取发送推送通知所需的设备令牌。
此外,您可以将这些令牌存储在某些数据库服务器上,以便在发送通知时进一步使用。当您想要向选定或所有用户发送一些通知时,您可以在下次使用这些令牌。