program story

푸시 알림이 testflight에서 작동하지 않는 이유는 무엇입니까?

inputbox 2020. 10. 29. 08:07
반응형

푸시 알림이 testflight에서 작동하지 않는 이유는 무엇입니까?


개발자 계정으로 푸시 알림을 테스트했는데 작동했지만 테스터가 테스트 할 수 있도록 TestFlight에 올리려고했을 때 푸시 알림이 표시되지 않았지만 데이터가 올바르게 수신 되었기 때문에 일종의 TestFlight를 위해 생성해야하는 인증서?


그러나 테스터가 테스트하기 위해 TestFlight에 넣으려고 할 때 푸시 알림이 표시되지 않았지만 데이터가 올바르게 수신되었습니다.

그 문장은 혼란 스럽습니다. 푸시 알림을받지 못한 경우 올바르게 수신 된 데이터는 무엇입니까?

어쨌든, 내가 올바르게 기억한다면, TestFlight의 경우 프로덕션 푸시 환경에서 작동하는 AdHoc 프로비저닝 프로파일을 사용하고 있습니다. 따라서 TestFlight를 통해 앱을 설치 한 장치로 푸시하려면 프로덕션 푸시 인증서가 필요합니다. 또한 개발 기기 토큰은 프로덕션 기기 토큰과 다르므로 올바른 토큰을 사용하고 있는지 확인하세요.


  1. testflight 빌드에는 프로덕션 인증서를 사용해야합니다.
  2. 또한 푸시 전송 스크립트의 푸시 알림 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의 경우

  1. 생산 증명서
  2. 서버의 "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")입니다.

즐거운 코딩입니다.


당신이 설정했는지 확인하십시오 FirebaseAppDelegateProxyEnabledYES의 Info.plist 파일에.

참고 URL : https://stackoverflow.com/questions/24044298/why-push-notifications-is-not-working-on-testflight

반응형