我正在使用在https://code.google.com/p/apns-php/提供的apns php服务器。
我已经设置了推送通知证书,但我的代码仍然在连接时抛出错误。
这是怎么回事?下面是获取设备令牌的方法:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken {
#if !TARGET_IPHONE_SIMULATOR
// Prepare the Device Token for Registration (remove spaces and < >)
NSString *deviceToken = [[[[devToken description]
stringByReplacingOccurrencesOfString:@"<"withString:@""]
stringByReplacingOccurrencesOfString:@">" withString:@""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
NSLog(@"%@", deviceToken);
#endif
}
这是我运行服务器时的错误:
Sat, 11 May 2013 13:37:53 -0700 ApnsPHP[18198]: INFO: Trying
ssl://gateway.push.apple.com:2195...
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Connected to ssl://gateway.push.apple.com:2195.
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Sending messages queue, run #1: 1 message(s) left in queue.
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: STATUS: Sending message ID 1 [custom identifier: abc123] (1/3): 101 bytes.
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: ERROR: Unable to send message ID 1: Invalid token (8).
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Disconnected.
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Trying ssl://gateway.push.apple.com:2195...
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Connected to ssl://gateway.push.apple.com:2195.
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: INFO: Sending messages queue, run #2: 1 message(s) left in queue.
Sat, 11 May 2013 13:37:54 -0700 ApnsPHP[18198]: WARNING: Message ID 1 [custom identifier: abc123] has an unrecoverable error (8), removing from queue without retrying...
Sat, 11 May 2013 13:37:55 -0700 ApnsPHP[18198]: INFO: Disconnected.
最可能的解释是,您正在向生产APNS服务器发送带有沙盒设备令牌的推送通知。
要么你正在使用一个旧的设备令牌,当你在沙箱环境中测试它时,你的应用程序发送给你的服务器,或者你的应用程序仍然与开发配置文件签署,并且仍然从APNS服务接收沙箱设备令牌。
我的回答假设您正在使用源自APN服务的设备令牌,而不是您自己创建的一些虚拟令牌。
我建议您检查配置文件,看看aps授权出现了什么值。我还建议您清除数据库中任何旧设备令牌。