iPhone推送通知

时间:2014-06-22 08:29:13

标签: iphone xcode

我有一个使用推送通知的iPhone应用程序。我对它如何工作的理解是我需要"设备令牌"在我发送通知之前,每部iPhone都有。

使用我拥有的测试iPhone,我可以从xcode界面获取设备令牌,并将它们存储在Push Notification PHP脚本用来发送通知的数据表中。

如何将推送通知发送到安装我不知道设备令牌ID的应用程序的iPhone。

我认为我的问题是;在我向iPhone发送通知之前,是否需要设备令牌。

如果我确实需要设备令牌,我如何使用我的应用程序从iPhone获取它。

2 个答案:

答案 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库来测试推送通知服务,这很好,您可以找到它的单元测试,然后将设备令牌粘贴到那里,然后运行它,您将从中获得消息。

sly/notification-pusher