Growth Push SDK 지원이 멈출 것 같아서 최신 Growth Bush SDK로 바꾸려면 고전할 이야기

6424 단어 GrowthPushiOS

개시하다


CYBIRD 엔지니어 Advent Calendar 2016
14번 담당자.네.
여성 연애 시뮬레이션을 위한 크로스 그룹이 프로그램을 개발하고 유지하고 있다.CYBIRD 졸업생 입사 2년 차입니다.
13일은 제 동기입니다.삼천 오백 구십오.네.
오, 만화 뷰어를 하고 있군요.

컨텐트


@kanacha
Growth Push의 관리 페이지를 보았는데 알림에 빨간 문자로'중요한'기사가 쓰여 있었습니다...(싫은 예감)
간단히 말해서, 오래된 Growth Push SDK는 사용할 수 없습니다. 최신 버전의 SDK를 가져오십시오.
또한 "2016/12/21(수) 이전 SDK는 지원을 중단합니다."이렇게 써있어요.
그리고 holiday shoutdown, 빨리 가져오고 발표하세요...일의 결과가 예상보다 더 고전적이라는 말을 했다.

Growth Push 정보


Growth push의 SDK는 몇 가지 종류가 있나 봐요.
・Growthbeat SDK2.x.x
・Growthbeat SDK1.x.x
・Growth Push SDK
중간에 Growth Push 기능이 Growthbeat SDK로 통합됩니다.(당사 어플리케이션에서 가장 오래된 "Growth Push SDK"가져오기)
다행히도 지원 페이지에서 각 버전에서 시작된 환승 순서를 정리하고 안내도 편리하게 가져왔다.
옛 SDK의 실크 코드도 있으니 "글쎄, 프레임 워크만 바꾸면 방법 명칭을 조금만 바꾸면 되겠지"
평소처럼 Ad-Hoc 버전을 제작하여 deploy Gate에 올리고 Push를 건너뛰는 곳으로
통지가 오지 않는다...
다른 터미널에서 해봤던 곳.
아이폰5C(OS 9.3.2) 도착
iPad2(OS 8.4.1) 미만
iPadmini(OS 7.1.1)가 충분하지 않음
아이폰4s(OS 8.4.1) 도착
아이폰6플러스(OS 10.0.2) 도착
아이폰6(OS 10.0.2) 미만
응응...법칙을 몰라...

원인을 조사하다


안 날아다니는 단말기는 왜 안 날아가는지 확인해.
우선 터미널 검사다.Push의 수령...효과가 있습니다.
Growth push의 관리 페이지를 확인합니다.Device 정보는...등록되었습니다.
하지만 설비 영패는 비어 있습니다!이것 괜찮아요?
Q&A 확인 후
@cy-kenta-takahashi
이어 "iOS의 경우 애플리케이션의 인증서 설정이 잘못되면 디바이스 토큰을 가져올 수 없고 디바이스 토큰이 비어 있을 수 있다"며 "이 경우 인증서 설정을 다시 확인하라"고 덧붙였다.
이런 거.
어플리케이션의 Provisioning Profile을 다시 제작하여 만일의 사태에 대비하여 Push 인증서를 다시 만들어 재등록합니다.
이렇게 하면 될 줄 알았는데 영패가 비어있어...
실기 빌딩에서 무슨 일이 일어났는지 확인하다.
- (void) application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"error: %@", error);
}
이 방법에 폭발점을 추가하여 error 로그를 확인함으로써push가 발송할 수 없는 원인을 확인합니다.
실행하려면 Xcode 연결에 대응하는 터미널의 iOSver가 없기 때문에 Xcode8입니다.1 구문.
그럼, 저기...?평범하게 영패에 들어갔다.그리고 Growrth Push 관리 도구도 통과했습니다!!
혹시 Xcode 버전 문제...?

대응


결론적으로 Xcode6은Growthbeat SDK가 4를 지원하지 않기 때문입니다.
Xcode 7 계열부터 프로젝트까지 Capabilities→Push Notifications라는 프로젝트가 추가된 것 같습니다. 아마도 이 때문일 것입니다.
Xcode7.3.1도 설비 영패를 받을 수 있다는 것을 확인했으니 안심하세요.
이럴 줄 알았는데 푸시가 터미널로 날아갔는데 푸시를 받지 못한 이유가 뭘까...

원인 조사 2


Growth push 관리 페이지 확인
· 등록된 Device 정보
・영패도 전달
・장치 상태는 활성, 전송 상태는 완료
· 푸시 알림의 발송 상세는'성공'이다
· 알림을 전송하는 로그'success'에 문제가 없음 확인
• 터미널에서 Push의 수신이 유효한지 여러 차례 확인
심상치 않다.정말 몰라요.
관리 도구를 보면서 막다른 골목에 이르면 설비의 상태에'정식'이라는 문자가 있음을 알아차린다.
응?정식 공연...?지금 실기 디버깅으로 확인 중...그나저나 본 공연은 뭐야?
조사 결과 iOS의 설비 영패에
Development 버전과 Production 버전이 존재하며 각각의 값이 완전히 다르다.
그렇다면 왜 관리 도구가 설비를 '정식 시작' 으로 인식하는가?
실크 코드를 확인한 후에 거기에 답이 있었어요...
    [[GrowthPush sharedInstance] initializeWithApplicationId:GROWTH_PUSH_APP_ID
                                                credentialId:GROWTH_PUSH_APP_SECRET
                                                 environment:TEST_SERVER_FLAG ? GPEnvironmentDevelopment : GPEnvironmentProduction];
Growth push의 초기화 방법입니다.
환경: 이런 매개 변수로 환경을 지정합니다.너무 바보 같아...

대응


그러니까 무슨 일이 일어났는지
Development 장치 토큰을 Growth push 관리 도구에 전달
Growth push가 애플에 Production에 대한 요청을 보냈습니다.
요약하자면, 디버깅을 진행할 때 Development의 환경을 확보하십시오.
발행 구축을 할 때 프로덕션 환경을 지정하지 않으면 퍼시가 날아오지 않는다.
이렇게 하면 해결된다!Ad-Hoc 버전을 deploy Gate로 올리고,Distribution 버전을 Test Flight에 던졌다.
그럼 디버깅 단말기에서 다운로드...응?다운로드 실패?
TestFlight에도 이상한 오류가 발생했습니다!!
만화 뷰어가 열리고 표시되는 이야기에 UIPageViewController를 사용합니다.

원인 조사의 3


https://sirok-growthbeat.amebaownd.com/posts/1313462
http://faq.growthbeat.com/article/60-push
이곳의 보도에는 상세한 내용이 있다.
• Xcode 7에서 Target->Capabilities->Push Notifications로 연결되지 않으면 Push 기능을 사용할 수 없습니다
・Xcode 8.1 Push Notifications를 ON으로 설정하면 프로젝트 name입니다.entitlements에 개발 항목 자동 추가
그러므로
「projectname」.entitlements에 개발 기술이 있는 상태에서Ad-Hoc/Distribution을 대상으로 구축할 때
deployGate를 설치할 수 없기 때문에 TestFlight에 업로드하는 것도 실패했습니다.

대응


대책으로 삼다
개발자와 추가 항목을 삭제하고 순조롭게 통과
(Xcode 7.3.1에 구축되어 원래 추가되지 않음
Xcode8.1에서 빌드 검증을 수행해도 그대로 남아 있는 것 같습니다.)
Xcode8 시스템 개발이라면
'development.entitlements','production.entitlements'처럼 서로 다른 aps-environment 두 개를 만들어서 Target별로 지정합니다
환경에 따라 구분해서 사용해야 할 것 같다.

끝말


결국, 나의 무지가 야기한 사건이었다.(Xcode와 iOS Dev Center 주변 사람들 덕분에 많이 배웠어요)
같은 고민을 하는 사람이 있다면 해결의 실마리가 됐으면 좋겠다.
내일세 분의
구독 서버 측 개발을 통해 얻은 지식입니다.

좋은 웹페이지 즐겨찾기