티스토리 뷰

반응형

iOS Shared Extention App Build Issue

iOS Xcode 에서 제공해주는 Extention 중에 Share Extension을 사용하면서 발생한 이슈를 공유 하려고 합니다.

먼저 Share Extension 이 무엇일까요?

웹 브라우저인 사파리, 크롬 등을 사용하면 '공유하기' 버튼을 발견할 수 있으면 그 버튼을 누를 시 공유할 앱을 선택하라고 나옵니다.

공유할 앱 대상으로 지정되도록 도와주는 기능이 Share Extension 기능입니다.

자세한 설명은 Apple Developer 에서 확인할 수 있습니다.

무슨 문제가 발생하였는가?


iOS Shared Extention 을 적용 후 배포를 위한 Build 시 위와 같은 이슈가 발생하였습니다.

무엇이 문제였을까요?

iOS Shared Extention .plist 를 살펴 보겠습니다.

iOS Shared Extention .plist

<key>NSExtension</key>
<dict>
<key>NSExtensionAttributes</key>
<dict>
<key>NSExtensionActivationRule</key>
<string>TRUEPREDICATE</string>
</dict>
</dict>
...

NSExtensionActivationRule 의 값이 TRUEPREDICATE 로 되어있을 것입니다.

TRUEPREDICATE 는 테스트용으로 Apple 에서 제공한 값이며 배포용으로 Build 시 TRUEPREDICATE 대신 공유 형태에 맞는 값으로 설정해야합니다.

iOS Shared Extention .plist

<key>NSExtensionAttributes</key>
   <dict>
       <key>NSExtensionActivationRule</key>
       <dict>
           <key>NSExtensionActivationSupportsImageWithMaxCount</key>
           <integer>3</integer>
           <key>NSExtensionActivationSupportsMovieWithMaxCount</key>
           <integer>1</integer>
           <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
           <integer>1</integer>
       </dict>
   </dict>
...

공유하는 목적에 맞춰서 NSExtensionActivationRule 값을 변경할 수 있습니다.

알맞은 형태로 변경 후 다시 build 시 오류 없이 성공적으로 빌드 되는 것을 확인할 수 있습니다.

마무리

iOS Shared Extention App Build Issue 시 NSExtensionActivationRule 값을 확인하여 변경되었는지 체크한다면 이슈 없이 동작하는 것을 확인할 수 있습니다.

참고

https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html

https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/AppExtensionKeys.html#//apple_ref/doc/uid/TP40014212-SW10

https://stackoverflow.com/questions/32892383/how-to-handle-nsextensionactivationrule-is-truepredicate

반응형
댓글