12

私はしばらくの間これに取り組んできました。そこにはたくさんの記事があることを知っており、そのすべてについて多くのことを学びました.

開発用 SSL と本番用 SSL を同じ方法で作成しました。開発は ssl://gateway.sandbox.push.apple.com:2195 に接続します 本番は ssl://gateway.push.apple.com:2195 に接続します 接続は正常に機能しているようです。

アプリに関しては。開発: xCode からデバイスで直接実行すると、開発バージョンが実行されます。アプリは開発トークンをデータベースに正常に記録します。次に、プッシュ通知を送信するサービスを実行すると、正しく配信されます。メッセージは正常に配信されました。

アドホック: アーカイブを作成してアドホック配布用にエクスポートするとき、パッケージの内容codesign -dvvvv --entitlements - Elepago.appを再確認し、aps-environment が正しく運用環境に設定されていることを確認します。それをパッケージ化して、iTunes 経由でデバイスにロードします。アプリが起動すると、データベースに記録された新しい運用トークンが表示されます。したがって、環境を正しく設定する必要があります。プッシュ通知を本番キーに送信すると (開発と同じで、SSL .pem キーとサーバーを変更するだけです)、正常に配信されたと表示されます。しかし、実際にデバイスに到達することはありません!!!

この問題は私を夢中にさせています。配布証明書を一掃し、完全に新しいCSRを使用して再構築しました。また、その新しい証明書を使用するようにすべてのプロビジョニング プロファイルを更新しました。[私がすでにチェックしている aps-environment 以外の、これらの証明書がアプリにどのように結び付くかについてのアイデア。]

どんな洞察も大歓迎です。

4

4 に答える 4

4

開発用と本番用のデバイス トークンは同じではありません。

本番用にテストしている場合は、UIAlertView を使用して本番用のトークンを確認してください。次のようにします。

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
    [[UIApplication sharedApplication] setApplicationIconBadgeNumber:0];
    NSString *deviceID = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    deviceID = [deviceID stringByReplacingOccurrencesOfString:@" " withString:@""];
    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Device Token", nil) message:deviceID delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", nil) otherButtonTitles:nil];
    [alert show];
}

このトークンを使用して、本番用のプッシュ通知を行います。

于 2014-03-04T09:07:36.027 に答える
1
  • 社内配布プロファイルは同じ tokenID を提供しますが、この tokenID はデバイスによって異なります。
  • その他の唯一の問題は、ProductionURL のみにある可能性があります。
  • また、プッシュ通知の受信が時々遅延することにも気付きました。これは主に本番 URL で使用した場合です。

お役に立てれば。

于 2013-08-25T04:36:56.857 に答える