問題
fastlaneは一度署名したipaを別の証明書に変えて再署名(=resign)する機能がある1。
しかし、この機能はアプリ本体のbundle idを変更してくれるけど、extensionのbundle idを変更してくれない。
解決
extensionのbundle idを手動で変更できる。例えば、Notification Service Extensionの場合は、下記の手順で変更できる:
- ipaをどこかにunzipする
- plutilを使って、extensionのbundle idのみを変更する
plutil -replace CFBundleIdentifier -string new.bundle.id.for.extension Payload/FOO.app/PlugIns/NotificationService.appex/Info.plist
- 変更後のファイルツリーをzipして
.ipa
にリネーム
こうすれば、fastlaneで変更後のextensionに対して再署名を行うので、問題が解決する。