いや標準的なUTIの記述例ならあるんだけど。
例として、.abcという拡張子のファイルを、Safari等から自分のアプリ(com.hoge.yourAppというIDのアプリで)で開けるようにする場合。
多分正解では無いと思うけど、試行錯誤の結果、こんな感じで動きましたよという例として書いときます。
プロジェクトのInfoタブの「Document Types」と「Exported UTIs」をいじります。
ってな感じで、
info.plistとしては
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>abc</string>
<string>ABC</string>
</array>
<key>CFBundleTypeIconFiles</key>
<array>
<string>icon</string>
</array>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>plain/abc</string>
</array>
<key>CFBundleTypeName</key>
<string>hogehoge File</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>LSItemContentTypes</key>
<array>
<string>com.hoge.yourApp</string>
</array>
</dict>
</array>
と
<key>UTExportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array/>
<key>UTTypeDescription</key>
<string>hogehoge File</string>
<key>UTTypeIdentifier</key>
<string>com.hoge.yourApp</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>abc</string>
<string>ABC</string>
</array>
</dict>
</dict>
</array>
って感じ。
いらないのもあったりしそうだけど、あくまでも動いた例ってことでご了承を。
(MIME-Typeは要らないかも)
あとはAppDelegate.mを修正。 こっちは楽勝。
//オプション付きで起動されるとき
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
if (launchOptions) {
NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
if ([url isFileURL]) {
//とか、なんか処理;
}
}
return YES;
}
//起動中に他のアプリから呼び出されるとき
- (BOOL)application:(UIApplication*)application handleOpenURL:(NSURL*)url {
if ([url isFileURL]) {
//とか、なんか処理;
}
return YES;
}
0 件のコメント:
コメントを投稿