2012-08-30 99 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中已经被删除,但它似乎工作得很完美:) –