FCM 이용시 백그라운드에서 푸쉬를 못받을때

2016. 9. 28. 15:08개발/iOS

상황


FCM을 이용을 하는데 이번에 Xcode8, iOS 10을 쓰면서 도무지 Background에서 Push Notification이 안오는 것이다.

message로 들어오는 userInfo를 찍어보면 형식이 아예 다르다.


기존

[
aps: {
  alert = {
    body = "";
    title = "";
  };
  "content-available" = 1;
},
data: data,
gcm.message_id: 0:BLAHBLAH

]


문제

data: data,
collapse_key: BLAH, notification: {
  body = "";
  e = 1;
  title = "";
},

from: BLAHBLAH


답답함에 새로 프로젝트를 만들었더니 그건 또 잘 된다.

기존에 있는 것이 안되니 참 답답하다.


같은 상황의 답답함을 여기서도 잘 느낄 수 있었다. (https://github.com/firebase/quickstart-ios/issues/21)


priority나 content_available의 문제가 아니다. remote notifications와도 상관이 없다.

인증서도 새로 업데이트를 해봤지만 안된다. 근데 어쩌면 인증서 업데이트가 도움의 한 축을 맡았을 수도 있다.


Xcode 8 을 쓰면서

Capabilities의 Push Notifications중에 

Add the Push Notifications entitlement to your entitlements file이 자꾸 오류가 나는데

이 부분을 해결해주면서 다음의 문제를 해결할 수 있었다.




의심스런 이슈


Add the Push Notifications entitlement to your entitlements file의 문제로 fix issue버튼이 너무 수시로 떴다.

on/off를 off로 했다가 다시 on을 하면 entitlements 이슈는 계속 발생하고 

project navigator에서 entitlements가 계속 쌓이는 현상까지 발생된다.

생기는 file에 key/value가 비어있는 것도 상당히 의심스러웠다.




해결과정


기존 프로젝트는 Build Settings의 Product Name을 Project Name과 다르게 지었다. (한글과 영어의 차이)

그러다보니 생기는 entitlements 파일이 자꾸 한글.entitlements 형태로 생기게 된다.

그래서 일단 Product Name을 기존의 Project Name으로 변경하였다.

그러고 fix issue를 하니 on/off의 문제도 해결되고 key/value도 잘 들어가 있었다.

(key/value는 APS Environment/development 이다.)

어플의 네임은 Info.plist에서 Bundle name에서 수기로 입력하였다.


이렇게 하니 나의 경우엔 다시 aps 형태로 날라오기 시작하였다.

어찌나 감사한지...




이 방법이 혹 누군가의 도움이 될 수 있을지도 몰라 내용을 공유한다.