Ich habe Push-Benachrichtigungen als Entwicklerkonto getestet und es hat funktioniert. Als ich jedoch versuchte, sie auf TestFlight zu stellen, damit die Tester sie testen konnten, wurde keine Push-Benachrichtigung angezeigt, aber die Daten wurden korrekt empfangen. Gibt es also eine Art von? Zertifikat, das ich für TestFlight generieren muss?
75
Antworten:
Dieser Satz ist verwirrend. Wenn Sie die Push-Benachrichtigung nicht erhalten haben, welche Daten werden korrekt empfangen?
Wenn ich mich richtig erinnere, verwenden Sie für TestFlight ein AdHoc-Bereitstellungsprofil, das mit der Produktions-Push-Umgebung funktioniert. Daher benötigen Sie ein Produktions-Push-Zertifikat, um auf Geräte zu übertragen, auf denen die App über TestFlight installiert wurde. Vergessen Sie außerdem nicht, dass sich Entwicklungsgerätetoken von Produktionsgerätetoken unterscheiden. Stellen Sie daher sicher, dass Sie die richtigen Token verwenden.
quelle
If the token came from the sandbox environment, such as when you are testing a development build in house, you can't send it to the production push service. Each push environment will issue a different token for the same device or computer. If you do send a device token to the wrong environment, the push service will see that as an invalid token and discard the notification.
von hier genommen .quelle
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]; }
quelle
type: FIRInstanceIDAPNSTokenTypeUnknown
, damit wir uns nicht daran erinnern müssen, dies zu ändern. Ich habe es selbst nicht versucht ...FIRInstanceIDAPNSTokenTypeUnknown
Argument valuef oder type zu verwenden, und kann bestätigen, dass ich eine Push-Benachrichtigung für Testflight-Builds erhalten konnteVerwenden Sie für TestFlight
quelle
wenn Sie GCM verwendet haben. In Entwicklung:-
Im Vertrieb: -
quelle
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 Benachrichtigungen 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);
quelle
Für jemanden, der Python-Apns verwendet ( https://github.com/djacobs/PyAPNs ):
Wenn Sie ein APNS-Objekt wie z
apns = APNs(cert_file="cert.pem", key_file="key.pem")
. Sie müssen einen weiteren Parameter hinzufügenuse_sandbox
. Es wird seinapns = APNs(use_sandbox=False, cert_file="cert.pem", key_file="key.pem")
.Viel Spaß beim Codieren.
quelle
Bitte stellen Sie sicher , dass Sie festgelegt haben ,
FirebaseAppDelegateProxyEnabled
umYES
in info.plist Datei.quelle
Versuchen Sie für Firebase Folgendes:
#if DEBUG Messaging.messaging().setAPNSToken(apnsToken, type: .sandbox) #else Messaging.messaging().setAPNSToken(apnsToken, type: .prod) #endif
quelle