In my Xcode project, I have 4 different schemes (prod, dev, staging, staging2) which changes the bundle identifier of the app that gets installed to the phone. That way I can have all 4 versions installed side by side, similar to this technique.
Now I'm building a Today Extension for iOS 8. It's a new Target requiring its own bundle identifier.
The Extension's Bundle Identifier must be prefixed with the Parent App's Bundle Identifier, or a warning is thrown:
error: Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier. Embedded Binary Bundle Identifier: com.company.app.TodayExtension Parent App Bundle Identifier: com.company.app.staging
In this case, the Embedded Binary Bundle Identifier must be com.company.app.staging.TodayExtension
.
Is there a way I can configure my Today Extension target to set its bundle identifier by first looking at the Parent target's bundle identifier? Perhaps through a custom Run Script Build Phase?
The build settings of the targets are not available for the other targets. However the build settings of the PROJECT are available.
You can thus add a user-defined build setting in your project and call it PARENT_APP_BUNDLE_IDENTIFIER and set the correct bundle id for all your schemes.
Then in the info tab of the app extension target set the bundle id to
$(PARENT_APP_BUNDLE_IDENTIFIER).$(PRODUCT_NAME:rfc1034identifier)
It worked perfectly fine for me.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With