2012-08-30 148 views
6

是否可以使用MonoTouch註冊自定義Url方案或協議,如myapp:123?我希望當用戶點擊網頁,郵件或日曆說明中的鏈接時啓動我的MonoTouch應用程序,然後選擇upp url參數(本例中爲「123」)。使用自定義Url /協議啓動MonoTouch iPhone應用程序?

總之我想要Spotify應用程序在iPhone中使用它的spotify功能:track123123它可以做到嗎?

回答

4

是的,我已經在我的幾個MonoTouch應用程序中完成了它。當您使用Facebook SDK登錄到您的應用程序時,實際上它是必需的。

一般情況下,跟隨你會爲一個普通的Objective-C的應用程序相同的指令:http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html

在你AppDelegate有一個HandleOpenURL方法重寫(在「與其他應用程序通信」看)。除此之外,Info.plist中只有一些設置可以更改。

+0

沒錯!得到它的工作。比實際情況容易得多:)手動編輯Info.plist以獲得關於該方案的正確內容,然後在AppDelegate中實現HandleOpenUrl(),就是這樣! –

6

是的,這是你需要做的。

添加在info.plist中某處字典標記內的以下內容:

<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方法:

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

感謝示例代碼隊友,它會幫助其他人。我曾經在某處讀過支持它的消息,在當前版本的monotouch中已經被刪除,但它似乎工作得很完美:) –