AppleScript について言及しているように、Mac OS X で作業していると思います。
カスタム URL スキームを登録して使用する簡単な方法は、.plist でスキームを定義することです。
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>URLHandlerTestApp</string>
<key>CFBundleURLSchemes</key>
<array>
<string>urlHandlerTestApp</string>
</array>
</dict>
</array>
スキームを登録するには、これを AppDelegate の初期化に入れます。
[[NSAppleEventManager sharedAppleEventManager]
setEventHandler:self
andSelector:@selector(handleURLEvent:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];
アプリケーションが URL スキームを介してアクティブ化されるたびに、定義されたセレクターが呼び出されます。
URL 文字列を取得する方法を示す、イベント処理メソッドのスタブ:
- (void)handleURLEvent:(NSAppleEventDescriptor*)event
withReplyEvent:(NSAppleEventDescriptor*)replyEvent
{
NSString* url = [[event paramDescriptorForKeyword:keyDirectObject]
stringValue];
NSLog(@"%@", url);
}
Apple のドキュメント: Get URL Handler のインストール
更新
にイベント ハンドラーをインストールするサンドボックス化されたアプリの問題に気付きましたapplicationDidFinishLaunching:
。サンドボックスを有効にすると、カスタム スキームを使用する URL をクリックしてアプリを起動したときに、ハンドラー メソッドが呼び出されません。ハンドラーを少し前にインストールすることapplicationWillFinishLaunching:
で、メソッドは期待どおりに呼び出されます。
- (void)applicationWillFinishLaunching:(NSNotification *)aNotification
{
[[NSAppleEventManager sharedAppleEventManager]
setEventHandler:self
andSelector:@selector(handleURLEvent:withReplyEvent:)
forEventClass:kInternetEventClass
andEventID:kAEGetURL];
}
- (void)handleURLEvent:(NSAppleEventDescriptor*)event
withReplyEvent:(NSAppleEventDescriptor*)replyEvent
{
NSString* url = [[event paramDescriptorForKeyword:keyDirectObject]
stringValue];
NSLog(@"%@", url);
}
iPhone で URL スキームのアクティベーションを処理する最も簡単な方法は、UIApplicationDelegate のapplication:handleOpenURL:
-ドキュメンテーションを実装することです。