我一直在尝试使用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];
}
答案 0 :(得分:3)
该应用应该使用:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
不
- (void)applicationDidFinishLaunching:(UIApplication *)application
答案 1 :(得分:2)
我发现PUSH通知要求在您的网络中打开端口5223(如果您使用的是WIFI),或者是其他蜂窝数据连接。
我在家庭网络中遇到了同样的问题,不得不在无线路由器中手动打开端口。
答案 2 :(得分:0)
我已经有了同样的事情,并花了几个小时试图找到底线。最终,我认为我的iPod touch无法连接到Apple以获取设备令牌,但它与任何防火墙无关。相反,问题似乎是设置某种(TLS?)加密连接与设备的时钟重置到某处1970 。
更新时间修复了一切。希望这可以帮助那些人:)。
答案 3 :(得分:-1)
回调看起来很好,正如你所说的那样,你应该在注册电话后不久(从任何地方)收到回电。
这似乎是一个愚蠢的问题,但只是为了确定 - 您委托的方法是在应用程序委托类中吗?
如果是这样,我就看不出为什么你的方法不会被调用。我在那里看到了NSLog语句,但你是否尝试过在入口处设置断点?你正在测试设备,而不是模拟器,对吗?