푸시 알림이 testflight에서 작동하지 않는 이유는 무엇입니까?
개발자 계정으로 푸시 알림을 테스트했는데 작동했지만 테스터가 테스트 할 수 있도록 TestFlight에 올리려고했을 때 푸시 알림이 표시되지 않았지만 데이터가 올바르게 수신 되었기 때문에 일종의 TestFlight를 위해 생성해야하는 인증서?
그러나 테스터가 테스트하기 위해 TestFlight에 넣으려고 할 때 푸시 알림이 표시되지 않았지만 데이터가 올바르게 수신되었습니다.
그 문장은 혼란 스럽습니다. 푸시 알림을받지 못한 경우 올바르게 수신 된 데이터는 무엇입니까?
어쨌든, 내가 올바르게 기억한다면, TestFlight의 경우 프로덕션 푸시 환경에서 작동하는 AdHoc 프로비저닝 프로파일을 사용하고 있습니다. 따라서 TestFlight를 통해 앱을 설치 한 장치로 푸시하려면 프로덕션 푸시 인증서가 필요합니다. 또한 개발 기기 토큰은 프로덕션 기기 토큰과 다르므로 올바른 토큰을 사용하고 있는지 확인하세요.
- testflight 빌드에는 프로덕션 인증서를 사용해야합니다.
- 또한 푸시 전송 스크립트의 푸시 알림 URL에서 sanbox (샌드 박스 모드)를 제거해야합니다.
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의 경우
- 생산 증명서
- 서버의 "gateway.push.apple.com"(백엔드 작업)
GCM을 사용한 경우. 개발 중 :-
_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};
유통 중 :-
_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
kGGLInstanceIDAPNSServerTypeSandboxOption:@NO};
알림을 보내기위한 두 개의 인증서가 필요합니다. 하나는 개발 용이고 다른 하나는 프로덕션 용입니다. 제 경우에는 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);
누군가 Python apns ( https://github.com/djacobs/PyAPNs )를 사용하는 경우 :
APNS 객체를 만들 때 apns = APNs(cert_file="cert.pem", key_file="key.pem")
. 매개 변수를 하나 더 추가해야합니다 use_sandbox
. 그것은 될 것 apns = APNs(use_sandbox=False, cert_file="cert.pem", key_file="key.pem")
입니다.
즐거운 코딩입니다.
당신이 설정했는지 확인하십시오 FirebaseAppDelegateProxyEnabled
에 YES
의 Info.plist 파일에.
참고 URL : https://stackoverflow.com/questions/24044298/why-push-notifications-is-not-working-on-testflight
'program story' 카테고리의 다른 글
범용 앱에서 iPad 및 iPhone Retina 그래픽을 모두 지원하는 방법 (0) | 2020.10.29 |
---|---|
크롬에서 작동하지 않는 옵션 패딩 선택 (0) | 2020.10.29 |
Excel에서 비어 있지 않은 모든 셀을 선택하기 위해 countifs를 얻는 방법은 무엇입니까? (0) | 2020.10.29 |
ASP.NET MVC의 Page.ResolveUrl에 해당하는 것은 무엇입니까? (0) | 2020.10.29 |
Java에서 인터페이스의 인스턴스를 만들 수 있습니까? (0) | 2020.10.29 |