0

作業シナリオ:アプリを xcode からデバイスに直接実行すると、サーバーでプッシュ通知を実行でき、期待どおりに動作します。

非稼働シナリオ:アプリを IPA にエクスポートし、iTunes 経由でデバイスにアプリをインストールします。サーバーから通知をプッシュすると、次のエラーが表示されますERROR: Unable to send message ID 1: Invalid token (8).

この記事を書いているときに、xcode のインストールと IPA のインストールのデバイス ID が異なることを考えて確認しました。

デバイスIDをサーバーに送信するためのコード:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    // You can send here, for example, an asynchronous HTTP request to your web-server to store this deviceToken remotely.

    // convert token to a single string
    NSString *token = [[[deviceToken description]
                        stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]] 
                       stringByReplacingOccurrencesOfString:@" " 
                       withString:@""];

    NSString *post = [NSString stringWithFormat:[NSString stringWithFormat:@"token=%@", token]];
    NSData *postData = [post dataUsingEncoding:NSASCIIStringEncoding allowLossyConversion:YES];

    NSString *postLength = [NSString stringWithFormat:@"%d", [postData length]];

    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init];
    [request setURL:[NSURL URLWithString:@"http://mywebsitename.com/ApnsPHP/add.php"]];
    [request setHTTPMethod:@"POST"];
    [request setValue:postLength forHTTPHeaderField:@"Content-Length"];
    [request setHTTPBody:postData];

    [NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *error){
        dispatch_async(dispatch_get_main_queue(), ^{
            NSError *e = nil;
            NSDictionary *dict = [XMLReader dictionaryForXMLData:data error:&e];
            NSLog(@"response from server: %@", dict);
        });
    }];

    NSLog(@"Did register for remote notifications: %@", deviceToken);
}

IPA ディストリビューションからのデバイス トークンが通過するようにするにはどうすればよいですか? ありがとう。

4

2 に答える 2

1

プッシュ ノートに関するこの質問を見つけたとき、関連する質問を熟読していました。私はアイデアについて考え、物事を上から下までチェックし始めました。私は最終的にこれを見つけました:

Apple プッシュ通知開発者ビュー

問題が私と同じようにあなたにも明らかであることを願っていますが、そうでない場合は理解しています。プロダクション プッシュ SSL 証明書のステータスが でない限り、APN は IPA では機能しませんEnabled

于 2012-07-09T18:51:58.077 に答える
1

Xcode のインストールは開発バージョンで、.ipa は運用/アドホックで、証明書が異なります。リモート通知ガイドをよくお読みください!

于 2012-07-07T17:04:05.783 に答える