アプリケーションを識別する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 Ωが立ち上がる。
Uniform Type Identifier (UTI)
データを識別する方法は以下のように複数個の種類が存在するが、UTIはシステム内で扱うデータを識別するための一本化された方法。
- Macintosh Systemのファイルタイプ (OSType)
- MS-DOSからの拡張子
- MIMEタイプ
App ID
形式は、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 |
Apple DeveloperサイトのApp ID
「証明書、ID、プロファイル」のIdentifiersで登録できるバンドルIDは、ストアでの重複を許さない仕様となっている。
Universal links の associated domains
以下は設定ファイルの例。
{
"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だ。
StoreKitのレシート
レシートにはApp IDでなくバンドルIDが。 でも、開発者サイトで登録するバンドルIDはユニークなので重複しない。
【関連情報】
iOSプログラミング ビルド&リリース
ResEdit Reference
Uniform Type Identifiers Overview
Cocoa Core Competencies
iOS Team Administration Guide
Configuring an associated domain
Supporting associated domains
App IDを登録する
Cocoa.swift
Cocoa勉強会 関東
Cocoa練習帳