반응형

요즘 앱이 아닌 웹 위주로 개발을 하다보니 이젠 앱 만드는 법도 가물가물해진 상황에서 늘 그러하듯 애플의 엿같은 인증서 체계로 인해 또한번 골탕을 먹었다.

정확히 하자면 인증서 문제인줄 알고 매번 애매한 오류를 내뱉어 버리는 애플의 푸쉬 인증서 문제인줄 알고 인증서 다 갈아버리고 새로 만들어 돌려도 저렇게 계속 


오류내용 : Error Domain=3000 "응용 프로그램을 위한 aps-environment 인타이틀먼트 문자열을 찾을 수 없습니다.(NSCocoaErrorDomain Code=3000) 라는 오류를 내뱉어 버렸다.

진심 빡친다.

가뜩이나 꽈놓은 인증서 체계인데 도무지 어디서부터 해결을 해야할지....




정말 삥삥 돌아서 얻은 정답


xcode8부터 괴상한 파일 두개가 생겨있다.

이게 또 웃긴게 어떤 프로젝트엔 프로젝트명.entitlements로 하나만 생성되어 있다. 

어처구니 없는 애플짓

내가 만들지도 않았는데 entitlements파일을 재수없어서 일단 삭제 후 다시 만들거나 아니면 복사해서 문자열만 바꾸거나 등등을 해야 하는데

난 깔끔하게 삭제하고 새로 만든다.


만약 없을경우 만드는 방법은 프로젝트를 눌러 나오는 메뉴에서 iCloud나 Push Notifications 등을 설정할 수 있는 capabilities에서 Push Notifications를 보면 이렇게 되어있을것이다. Fix issue를 누르면 앞서 entitlements파일이 생성됨을 알 수 있다.


그리고 편집모드에서 (plist파일처럼) APS Environment을 추가하고 production 으로 넣어준다.



끝으로 Build Settings에 가서 code signing entitlements 부분에 debug와 release에 각각 좀전에 만든 environment를 지정해줘야 오류가 안생긴다.

이부분이 가장 중요하다.

워낙 많은 Setting항목들 때문에 All로 해둔 상태에서만 보이기 때문에 자칫 못찾을 가능성도 존재한다.

루트에 있으면 저렇게 루트 그대로 루트 밑에 다른 폴더에 만들었으면 경로를 적어주면 잘된다.



그리고 빌드하면 예전처럼 오류없이 푸시가 잘 받아진다.


3줄요약

1.Capabilities에서 push notification의 fix issue하자

2.entitlements생기면 value에 production을 입력하고 Build Settings에서 code signing entitlements에 경로 제대로 잡혀있는지 확인

3.망할 애플








반응형
Posted by Hippalus
,

반응형

CocoaPod로 라이브러리를 추가한 후 Undefined symbols for architecture arm64 : _OBJC_CLASS_$_해당클래스명 오류가 발생할 수 있다.

이런 링크 오류가 발생하면 난감해진다.

stackoverflow.com을 찾아봐도 /Users/유저/Library/Developer/Xcode/DerivedData/프로젝트/Build의 하위폴더를 날리라는 엄한 답만 나와있고 -_-


결국 찾은답이 의외로 간단하다.


Xcode의 좌측 프로젝트(Command+1)보기 화면의 하단에 Pods/Products로 가보면 해당 라이브러리가(라이브러리명.a 파일) 보인다.


누르고 우측탭을 보면 Pods-프로젝트과 함께 해당 외부클래스명이 보이는데 Pods-프로젝트의 체크박스에만 체크해주고 빌드하면 감족같이 에러가 사라짐을 확인할 수 있다.

이거 찾아내느라 2시간 넘게 고생 ㅡㅡ









반응형
Posted by Hippalus
,