Apple Push Notification - 无法回调 didRegisterForRemoteNotificationsWithDeviceToken
Posted
技术标签:
【中文标题】Apple Push Notification - 无法回调 didRegisterForRemoteNotificationsWithDeviceToken【英文标题】:Apple Push Notification-Unable to callback didRegisterForRemoteNotificationsWithDeviceToken 【发布时间】:2009-10-05 11:00:54 【问题描述】:我一直在尝试使用 Apple 推送通知服务从我的 iPhone 应用程序中获取 deviceToken。 我暂时在服务器端没有任何实现。 我已经创建了 APP Id,获得了 SSL 证书,使用 APN 提供配置文件并调用了
- (void)applicationDidFinishLaunching:(UIApplication *)application
//view init and add sub view to window
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound];
方法。 当我执行应用程序时,它会弹出操作框以允许推送通知(意味着我的 APN 注册请求正在运行)但我的回调未执行。 didRegisterForRemoteNotificationsWithDeviceToken 和 didFailToRegisterForRemoteNotificationsWithError 都没有被调用?有人可以帮我解决这个问题吗?以下是我的callbacs供参考。
- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err
UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"APNClient" message:@"Entered into Error Method" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[myAlert show];
[myAlert release];
NSLog(@"Error in registration. Error: %@", err);
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken
UIAlertView *myAlert = [[UIAlertView alloc] initWithTitle:@"APNClient" message:@"Got the deviceToken..!" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[myAlert show];
[myAlert release];
【问题讨论】:
【参考方案1】:应用程序应该正在使用:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
不是
- (void)applicationDidFinishLaunching:(UIApplication *)application
【讨论】:
zaph,感谢您的回答。但是 Apple 文档明确指出 - applicationdidFinishLaunchingWithOptions 将在您处理消息接收时使用。我还在尝试先获取 deviceToken。 Apple dpcumentations 声明:建议您实现此方法而不是 applicationDidFinishLaunching:。【参考方案2】:我发现 PUSH 通知需要在您的网络中打开端口 5223(如果您使用的是 WIFI),或者需要蜂窝数据连接。
我在家庭网络中遇到了同样的问题,不得不在无线路由器中手动打开端口。
【讨论】:
【参考方案3】:我也遇到过同样的情况,而且确实花了好几个小时试图弄清楚这一点。最终,我发现我的 iPod touch 根本无法连接到 Apple 以获取设备令牌,但这与任何防火墙无关。相反,问题似乎在于设置某种(TLS?)加密连接,并结合设备时钟重置为 1970 年。
更新时间修复了一切。希望这可以帮助那里的人:)。
【讨论】:
【参考方案4】:回调似乎很好,正如您所说,您应该在进行注册调用后不久(从任何地方)收到回调。
这似乎是一个愚蠢的问题,但可以肯定的是 - 您的委托方法在应用程序委托类中?
如果是这样,我就是不明白为什么不调用您的方法。我在那里看到了 NSLog 语句,但是您是否尝试过在入口处实际设置断点?而且您是在设备上进行测试,而不是在模拟器上进行测试,对吧?
【讨论】:
以上是关于Apple Push Notification - 无法回调 didRegisterForRemoteNotificationsWithDeviceToken的主要内容,如果未能解决你的问题,请参考以下文章
Send push notification on Apple (APNS) on c#.net
Apple Push Notification Service 发送重复通知
Apple Push Notification Service 用户响应
Apple Push Notification 与生产服务 URL 上的开发证书一起使用