wake-up-neo.com

Warum funktionieren Push-Benachrichtigungen nicht im Testflug?

Ich habe Push-Benachrichtigungen als Entwicklerkonto getestet und es hat funktioniert. Aber als ich versuchte, TestFlight für die Tester zu testen, zeigte es keine Push-Benachrichtigung an, aber die Daten wurden korrekt empfangen. Also gibt es eine Art Zertifikat, das ich für TestFlight generieren muss?

64
Iman

Als ich jedoch versuchte, TestFlight für die Tester zu testen, wurde keine Push-Benachrichtigung angezeigt, aber die Daten wurden korrekt empfangen.

Dieser Satz ist verwirrend. Wenn Sie keine Push-Benachrichtigung erhalten haben, welche Daten werden korrekt empfangen?

Wenn ich mich recht erinnere, verwenden Sie für TestFlight ein AdHoc-Provisioning-Profil, das mit der Produktions-Push-Umgebung funktioniert. Daher benötigen Sie ein Produktions-Push-Zertifikat, um auf Geräte zu pushen, auf denen die App über TestFlight installiert ist. Vergessen Sie außerdem nicht, dass Entwicklungsgerät-Token sich von Produktionsgerät-Token unterscheiden. Stellen Sie daher sicher, dass Sie die richtigen Token verwenden.

76
Eran

1.Sie benötigen ein Produktionszertifikat für den Testflight Build . 2. Sie müssen auch sanbox (Sandbox-Modus) von der Push-Benachrichtigungs-URL im Push-Sendeskript entfernen.

35
Sandeep

Wenn Sie Firebase verwenden, müssen Sie Folgendes hinzufügen:

  • Testflug:

    -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
        [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeSandbox]; 
    }
    
  • Produktion:

    -(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
        [[FIRInstanceID instanceID] setAPNSToken:deviceToken type:FIRInstanceIDAPNSTokenTypeProd]; 
    }
    
12
delarcomarta

wenn Sie GCM verwendet haben . In Entwicklung: -

_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
                             kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};

In der Verteilung: -

_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
                             kGGLInstanceIDAPNSServerTypeSandboxOption:@NO};
5
Ahmed Abdallah

Verwenden Sie für TestFlight 

  1. Produktionszertifikat
  2. "gateway.Push.Apple.com" auf dem Server (Back-End-Job)
3
Md Rais

Für jemanden, der Python apns ( https://github.com/djacobs/PyAPNs ) verwendet:

Wenn Sie ein APNS-Objekt wie apns = APNs(cert_file="cert.pem", key_file="key.pem") erstellen. Sie müssen einen weiteren Parameter use_sandbox hinzufügen. Es wird apns = APNs(use_sandbox=False, cert_file="cert.pem", key_file="key.pem") sein.

Fröhliches Codieren.

1
Luat Vu Dinh

Wir benötigen zwei Zertifikate zum Senden von Benachrichtigungen, eines für die Entwicklung und eines für die Produktion. In meinem Fall verwende ich die PushSharp-Lösung, um eine Benachrichtigung zu senden.

Dies ist für die Entwicklung:

var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Sandbox, "development.p12", "password");
var broker = new ApnsServiceBroker(config);

Dies ist für die Produktion:

var config = new ApnsConfiguration(ApnsConfiguration.ApnsServerEnvironment.Production, "production.p12", "password");
var broker = new ApnsServiceBroker(config);
1
Lokesh Goud

Bitte stellen Sie sicher, dass Sie FirebaseAppDelegateProxyEnabled in der Datei info.plist auf YES gesetzt haben.

0
AnupamChugh