私は開発者アカウントとしてプッシュ通知をテストしましたが、動作しますが、テスターがテストするためにTestFlightに配置しようとしても、プッシュ通知は表示されませんでしたが、データは正しく受信されました。 TestFlight用に生成する必要がある証明書
しかし、テスターがテストするためにTestFlightに配置しようとすると、プッシュ通知は表示されませんでしたが、データは正しく受信されました。
その文は紛らわしいです。プッシュ通知を受け取らなかった場合、どのデータが正しく受信されますか?
とにかく、正しく思い出せば、TestFlightにはAdHocプロビジョニングプロファイルを使用しており、本番プッシュ環境で動作します。したがって、TestFlightを介してアプリをインストールしたデバイスにプッシュするには、本番プッシュ証明書が必要です。さらに、開発デバイストークンは本番デバイストークンとは異なることを忘れないでください。正しいトークンを使用していることを確認してください。
Firebaseを使用する場合、次を追加する必要があります。
TestFlight:
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
[[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox];
}
製造:
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
[[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeProd];
}
TestFlightの場合、使用
gCMを使用した場合。開発中:-
_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};
配布中:-
_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
kGGLInstanceIDAPNSServerTypeSandboxOption:@NO};
誰かがPython apns( https://github.com/djacobs/PyAPNs )を使用する場合:
apns = APNs(cert_file="cert.pem", key_file="key.pem")
などのAPNSオブジェクトを作成するとき。もう1つのパラメーターuse_sandbox
を追加する必要があります。 apns = APNs(use_sandbox=False, cert_file="cert.pem", key_file="key.pem")
になります。
ハッピーコーディング。
通知を送信するには、開発用と本番用の2つの証明書が必要です。私の場合、PushSharpソリューションを使用して通知を送信しています。
これは開発用です。
var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Sandbox, "development.p12", "password");
var broker = new ApnsServiceBroker(config);
これは実稼働用です。
var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Production, "production.p12", "password");
var broker = new ApnsServiceBroker(config);
Info.plistファイルでFirebaseAppDelegateProxyEnabled
をYES
に設定したことを確認してください。