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 注册请求正在运行)但我的回调未执行。 didRegisterForRemoteNotificationsWithDeviceTokendidFailToRegisterForRemoteNotificationsWithError 都没有被调用?有人可以帮我解决这个问题吗?以下是我的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 上的开发证书一起使用

当用户拒绝初始提示时,Apple Push Notification 注册回调? [复制]

Apple Push Notification 不适用于非开发的临时构建