14

我使用的是在https://code.google.com/p/apns-php/提供的apns php服务器。APNS:无效令牌(8)

我已经设置了推送通知证书,但是我的代码在连接时仍然会报错。

这有什么问题?这里是我得到的设备令牌:

- (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. 
+0

您是否在此构建中使用Ad-Hoc置备配置文件?否则生产证书将不起作用。 – edwardmp 2013-05-12 11:09:42

+0

@edwardmp是的我认为这是问题。 – 2013-05-12 22:08:24

回答

20

最可能的解释是,你发送推送通知了沙箱设备令牌到生产APNS服务器。

您正在使用在沙箱环境中测试时由应用发送到服务器的旧设备标记,或者您的应用仍使用开发资源调配配置文件进行签名,并且仍在接收沙箱设备标记来自APNS服务。

我的答案假设您使用的是源自APN服务的设备令牌,而不是您自己创建的某个虚拟令牌。

我建议您检查供应配置文件以查看aps权利的值。我也建议你从任何旧的设备令牌清除你的数据库。

+0

嗯...现在它不会抛出一个错误,我改变了沙箱,但我的设备仍然没有收到通知,据我所知。 – 2013-05-12 22:17:37

+0

@JasonSilberman你改变了什么沙盒?应用程序或服务器?如果您在服务器上使用了错误的证书(使用沙箱推送证书连接到生产APNS服务器,反之亦然),设备将不会收到任何内容,并且服务器不会收到任何错误响应。 – Eran 2013-05-12 22:51:10

+0

我正在使用沙盒网关和沙盒证书 – 2013-05-13 01:26:38