19

私は、次のように Info.plist ファイルに登録されているカスタム スキームを持つ URL を使用して起動/アクティブ化される Cocoa アプリに取り組んでいます。

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLName</key>
        <string>Open myscheme:// URLs</string>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>myscheme</string>
        </array>
    </dict>
</array>

私の質問は、アプリが起動またはアクティブ化されたら、アプリを起動した URL をどのように確認すればよいですか? iOS では、NSURL インスタンスが渡されるため、UIApplicationDelegate の -application:openURL:sourceApplication:annotation: メソッドを使用すると簡単です。

myscheme://do/something/awesomeのような URL を使用してアプリにデータを渡すことができるようにしたい

4

1 に答える 1

24

アプリのデリゲートで、次の-applicationWillFinishLaunching:ようにします。

[[NSAppleEventManager sharedAppleEventManager] setEventHandler:self andSelector:@selector(handleAppleEvent:withReplyEvent:) forEventClass:kInternetEventClass andEventID:kAEGetURL];

handleAppleEvent:withReplyEvent:のようになります。

- (void)handleAppleEvent:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent {
    NSString *urlString = [[event paramDescriptorForKeyword:keyDirectObject] stringValue];
    // do something with the URL string
}
于 2012-03-16T03:57:40.703 に答える