2012-08-30 8 views
6

myapp:123のようなカスタムURLスキームまたはプロトコルをMonoTouchで登録することはできますか?ユーザーがWebページ、メール、カレンダーの説明でこのリンクをクリックしたときに起動するMonotouchアプリケーションを起動し、URL "parameters"(この場合は "123")を選択します。カスタムURL /プロトコルを使用してMonoTouch iPhoneアプリケーションを起動しますか?

要するに、私はspotifyでiPhoneのSpotifyアプリと同じ機能を望んでいます:track:123123できますか?

答えて

4

はい、私はMonoTouchの2つのアプリケーションでこれを行っています。実際には、Facebook SDKを使用してアプリにログインするときに必要になります。あなたのAppDelegatehttp://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html(「他のアプリとの通信」の下に見える)

オーバーライドするHandleOpenURL方法があります:一般的に

、あなたは定期的にObjective-Cのアプリの場合と同じ手順に従ってください。それ以外にもInfo.plistの設定を変更するだけです。

+0

うん:

<key>CFBundleURLTypes</key> <array> <dict> <key>CFBundleURLName</key> <string>com.companyname.com.receiver</string> <key>CFBundleURLSchemes</key> <array> <string>myapp</string> </array> </dict> </array> 

はその後AppDelegate.csでHandleOpenURLメソッドをオーバーライドします!それは働いた。私は実際に思ったよりも簡単です:) Info.plistを手動で編集して、スキームについて適切なものを取得し、次にAppDelegateでHandleOpenUrl()を実装しました。 –

6

はい、ここが必要です。

はのInfo.plistにdictのタグ内のどこかに以下を追加します。

public override bool HandleOpenURL (UIApplication application, NSUrl url) 
{ 
    if (url == null) { 
     return false; 
    } 

    var uri = new Uri(url.ToString()); // I prefer working with the Uri class. 

    // Your logic here 

    return true; 
} 
+1

サンプルコードメイトのおかげで、他の人に役立つでしょう。私は、これのサポートがモノトゥッチの現在のバージョンでは削除されたが、ちょうど完璧に動作すると思われるどこかを読んだことがあります:) –