我有一个使用推送通知的iPhone应用程序。我对它如何工作的理解是我需要"设备令牌"在我发送通知之前,每部iPhone都有。
使用我拥有的测试iPhone,我可以从xcode界面获取设备令牌,并将它们存储在Push Notification PHP脚本用来发送通知的数据表中。
如何将推送通知发送到安装我不知道设备令牌ID的应用程序的iPhone。
我认为我的问题是;在我向iPhone发送通知之前,是否需要设备令牌。
如果我确实需要设备令牌,我如何使用我的应用程序从iPhone获取它。
答案 0 :(得分:0)
您无法通过模拟器接收任何推送通知。
您不能直接发送通知。你告诉Apple的服务器,这个设备令牌有通知。然后iPhone会自动询问接收推送通知是否有一些可用。
回答你的问题:是的,你做到了。如果没有设备令牌,您无法将通知注册到Apple的服务器。然后你必须实现这个寄存器设备来获取DeviceToken:
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken
答案 1 :(得分:0)
这是你应该查找== Push Notification Programming Guide
- (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);
}
请参阅apple Local和Push Notification Programming Guide中的代码,首先你必须在应用程序中调用registerForRemoteNotificationTypes,然后在两个代理中,你可以得到dev令牌,这个令牌来自APNS,所以当你得到它,您将把它发送到您的服务来存储它。并且您无法从模拟器获取设备令牌。
您的推送通知服务必须使用设备令牌向您的应用发送通知,因此您肯定需要它。此外,您还必须从apple dev中心获取SSL证书,该证书需要有效的iOS开发者ID。
有关详细信息,请查看Push Notification Programming Guide,这是一个很好的帮助。 此外,我尝试使用这个PHP库来测试推送通知服务,这很好,您可以找到它的单元测试,然后将设备令牌粘贴到那里,然后运行它,您将从中获得消息。