2011年12月2日 星期五

IOS Bundle Id or Bundle Seed Id 解說

今天被問到了甚麼是 bundle id , bundle seed id , application id。
我想寫一篇文章來分享一下。

對於IOS來說每個應用程式都需要有一個唯一的ID來識別,這就像是資料庫裡頭的Primary key一樣,Apple的設計就是使用bundle seed id + application id 產生 application id。



舉個例子說明一下
以開發人員角度進入IOS Development Center後,我們到Provisioning Portal下可以看到App Ids這個項目,裡頭會列出所有的隸屬這個賬號的Application Id,我們看下面這個Application Id範例:
33LE83RVLQ.com.infinitystudio.apps.*

33LE83RVLQ 
這個數值總共是10個字稱作bundle seed id,這會在建立一個新的App Id的時候由Apple自動產生給你。

com.infinitystudio 
這串文字代表的是公司名稱,一般來說我們會使用domain name來呈現,不過當然也可以不需要。

.* 
這個意思代表這是一個廣域的定義,你可以依據在這個App Ids下面開發多個應用程式,
例如33LE83RVLQ.com.infinitystudio.apps.erp 或是 33LE83RVLQ.com.infinitystudio.apps.crm,但是要注意的就是33LE83RVLQ.com.infinitystudio.apps 這就不包括在這個廣域設定裡頭。

結論
由上面的說明可以知道,Apple為了確保應用程式的Id是唯一值,所以他控管了前面十個字元也就是bundle seed id來確保每個帳號下面的每個應用程式都是唯一。而在bundle seed id 後面叫交給開發人員來自行決定自己的產品要如何分類規劃。

補充
application id 與 bundle seed id對於開發純軟體應用app限制並不大,但是對於開發應體與ios設備連接的設計來說就需要注意一下不要使用廣域的app id像是 843EIDJQUJ.com.infinitystudio.*,因為這樣子在附加設備與IOS設備溝通的時候將不能自動啓動軟體。下面說明一下IOS設備與附加硬體設備溝通的流程:
  1. 附加設備連接上IOS設備
  2. 附加設備送出預先燒錄在ROM上的bundle seed id給IOS設備
  3. IOS使用bundle seed id搜尋符合的軟體
  4. 開啓應用軟體
如果使用廣域的app id的話,IOS會跳出提示要你去app store搜尋,所以要注意的是!如果你開發的軟體需要連結硬體,那就要使用完整的唯一的才有辦法自動開啓。

4 則留言:

  1. 太棒了 這篇文章

    回覆刪除
  2. welcome! 很高興這篇文章對大家有幫助

    回覆刪除
  3. 如果我有兩個APP都要用同一個硬體,要如何設定呢?可以重複嗎?

    回覆刪除