I am trying to develop an iPhone app that integrates properly with a "Made for iPh开发者_开发知识库one" accessory. There is conflicting documentation as to whether applications with wildcard Bundle Identifiers will work properly. I need to know whether
- An app with a wildcard identifier will show up in the app store when the accessory is connected and the app is not installed
- That the app will launch when the accessory is connected
The manufacturer is asking for our Bundle Seed ID and Bundle Identifier which they tell us should be a reverse-dns style string, but it is in fact a .*
The conflicting information...
From Apple's provisioning portal:
An App ID is the combination of a unique ten character string called the "Bundle Seed ID" and a traditional CF Bundle ID (or Bundle Identifier). The Bundle Seed ID portion of your App ID can be utilized to share keychain access between multiple applications you build with a single App ID. In addition, it can be incorporated into any external hardware accessories you wish to pair your iOS application with. Registration of your App ID is required to utilize the Apple Push Notification service (APNs) and to register an application to incorporate In App Purchases.
The Bundle Identifier portion of an App ID can be substituted with a wild-card character (asterisk '*') so that a single App ID may be used to build and install multiple applications. If the wild-card character is not used, the Bundle Identifier portion of your App ID must be input as your CF Bundle ID in Xcode to allow the application to install on your device. The Bundle Seed ID portion of your App ID does not need to be input into Xcode. Wild-card App IDs cannot be used with the Apple Push Notification service or for In App Purchase.
From the App ID portion of gumbypp. Specifically:
Apple says: "App IDs are an integral part of the iPhone Development and Provisioning Process that allows an application to communicate with the Apple Push Notification service and/or an external hardware accessory." For every app that uses APNS, In App Purchase, or external hardware accessories, you will need a specific App ID. All other apps can use a Wild-card App ID.
I searched for that quote in Google, but could not find it.
In your accessory, during identification process, accessory has to tell iOS the Bundle Seed ID, the xxxxxxxx portion of xxxxxxxx.com.yourcompany.yourappname.
iOS will use this Bundle Seed ID to search for an app that is responsible for communicating with this accessory. If your app has a wildcard identifier, it will never be chosen. And a dialog will be shown asking the user whether it should proceed to App Store to search for the required app.
I called the hardware manufacturer's tech support and they confirmed that wildcard app id is okay. I think the wildcard App ID resolves to an explicit App ID when you build/deploy.
The only limitation I can tell is not being able to use Push Notification and Game Center.
精彩评论