如何将设备令牌作为Apple推送通知服务提供商?

时间:2014-08-05 08:36:29

标签: ios apple-push-notifications

我想添加对Apple推送通知发送到iOS应用程序的支持。这是一个新闻应用,因此每次发生重要新闻事件时,我都会向所有安装该应用的用户和设备广播推送通知。

根据Apple Push Notification Service documentation,在图3-3中,客户端应用程序必须将设备令牌发送给提供商。

为了能够将Push Notifications发送到安装了我的应用程序的所有设备,我是否必须创建一个web服务,在注册通知时从客户端应用程序接收和存储设备令牌?为了发送推送通知,我需要一个令牌和有效负载。我想向所有用户发送推送通知,通常是数千名用户。那么我怎样才能最好地访问设备令牌,以便我可以将推送通知发送给所有用户?

1 个答案:

答案 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中写这个,这将获取发送推送通知所需的设备令牌。

此外,您可以将这些令牌存储在某些数据库服务器上,以便在发送通知时进一步使用。当您想要向选定或所有用户发送一些通知时,您可以在下次使用这些令牌。