iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
アプリケーションを識別するIDとは何か?それは、世界でユニークなIDなのか?開発者(Developer Program)でユニークなIDなのか? ストアでユニークなIDなのか?著名なアプリのIDを自分のアプリにつけれるのか?アプリ内課金の不正対策で、レシートが他のアプリのものかどうかを何で確認すればいいのか?一般的なファイルフォーマット(例えばテキストやPNG)のファイルをダブルクリックすると、それを作成したアプリが起動するのは何故か?
ちょっと気になるが知らないと困ることがあるアプリケーション識別子ついて、懐かしい情報から最近の情報まで調査した。
Macintosh Systemでは4文字の数値('PTNG'や'APPL'など)で種類を表していた。ファイルの種類はファイルタイプ、アプリケーションの識別はクリエータと呼ばれ、重複を防ぐため、APDA(Apple Programmer's and Developer's Association)への登録制度を設けていた。
種類 | 説明 | |
---|---|---|
ファイルタイプ | 'PTNG' | MacPaint書類(PaiNTinG) |
'APPL' | アプリケーション | |
'TEXT' | テキスト・ファイル | |
クリエータ | '8BIM' | Photoshop |
'WILD' | HyperCard |
上図の設定を選択するとクリエータが保存されるようになり、プレーンテキスト・ファイルのダブルクリックでJedit Ωが立ち上がる。
データを識別する方法は以下のように複数個の種類が存在するが、UTIはシステム内で扱うデータを識別するための一本化された方法。
形式は、seed_id.id。seed_idは10文字の「バンドルシードID(Bundle Seed ID)」で、Member CenterのアカウントIDに基づいて決定される。idはバンドルID。
タイプ | App ID | バンドルID |
---|---|---|
明示的 | 123456789A.com.example.Demo | com.example.Demo |
ワイルドカード | 123456789A.* | com.example.Demo |
123456789A.com.example.* | com.example.Demo |
「証明書、ID、プロファイル」のIdentifiersで登録できるバンドルIDは、ストアでの重複を許さない仕様となっている。
以下は設定ファイルの例。
{
"applinks": {
"details": [
{
"appIDs": [ "ABCDE12345.com.example.app", "ABCDE12345.com.example.app2" ],
"components": [
...
]
}
]
},
"webcredentials": {
"apps": [ "ABCDE12345.com.example.app" ]
},
"appclips": {
"apps": ["ABCED12345.com.example.MyApp.Clip"]
}
}
appIDsの書式は以下のとおり。
.
App IDだ。
レシートにはApp IDでなくバンドルIDが。 でも、開発者サイトで登録するバンドルIDはユニークなので重複しない。