アプリにプッシュ通知を設定しています。application:didRegisterForRemoteNotificationsWithDeviceToken:
メソッドでAPNSから受け取ったデバイストークンがサンドボックスからのものか、開発環境からのものかを判断しようとしています。どの環境がトークンを初期化したかを区別できれば、プッシュ通知を送信する環境をサーバーに伝えることができます。
マクロを使用してこれを判別しようとしましたDEBUG
が、これで奇妙な動作が見られ、100%正しいとは信じられません。
#ifdef DEBUG
BOOL isProd = YES;
#else
BOOL isProd = NO;
#endif
理想的にはaps-environment
、コードで資格(値は開発または本番)を調べることができますが、これが可能かどうかはわかりません。
アプリがAPNSサンドボックスと本番環境のどちらと通信しているかを判断する適切な方法は何ですか?そもそもサーバーがこれを知る必要があると思います。これが仮定が正しくない場合は、私を訂正してください。
編集: APNSとのプロバイダー通信に関するAppleのドキュメントでは、サンドボックスとの通信と本番環境との通信の違いについて詳しく説明しています。ただし、ドキュメントには、(iOSクライアントアプリからの)トークンの登録とサーバーとの通信の一貫性を保つ方法についての情報は記載されていません。