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エンタイトルメントに表示される値を確認することをお勧めします。古いデバイストークンからデータベースをクリアすることもお勧めします。