【问题标题】:How to get device tokens as Apple Push Notification Service provider?如何作为 Apple 推送通知服务提供商获取设备令牌?
【发布时间】:2014-08-05 08:36:29
【问题描述】:
我想添加对向 iOS 应用发送 Apple 推送通知的支持。这是一个新闻应用,所以每次发生重要的新闻事件时,我都会向安装了该应用的所有用户和设备广播推送通知。
根据Apple Push Notification Service documentation,在图 3-3 中,Client App 必须将设备令牌发送给 Provider。
为了能够向安装了我的应用程序的所有设备发送推送通知,我是否必须创建一个 Web 服务,以便在客户端应用程序注册通知时接收并存储来自客户端应用程序的设备令牌?为了发送推送通知,我需要一个令牌和有效负载。我想向所有用户发送推送通知,通常是数千名用户。那么如何才能最好地访问设备令牌,以便向所有用户发送推送通知?
【问题讨论】:
标签:
ios
apple-push-notifications
【解决方案1】:
是的。您必须创建一个网络服务来将推送通知发送到使用您的应用程序的任何设备。 就设备令牌而言,您可以使用以下代码通过代码获取它们:
- (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 中写入此内容,这将获取发送推送通知所需的设备令牌。
此外,您可以将这些令牌存储在某些数据库服务器上,以便在发送通知时进一步使用。下次您想向选定或所有用户发送一些通知时,可以使用这些令牌。