Swift程序在我的iPad上打开下载的应用程序

问题描述:

我正在开发一个应用程序,我试图创建一个打开用户下载的应用程序的按钮。由于之前的问题,我得到了一些工作代码(Swift)。我有以下几点。Swift程序在我的iPad上打开下载的应用程序

@IBAction func Website(_ sender: Any) { 

    let powerHooks = "mspbi://app/" 

    let powerUrl = NSURL(string: powerHooks) 
    if UIApplication.shared.canOpenURL(powerUrl! as URL) 
    { 
     UIApplication.shared.openURL(powerUrl! as URL) 

    } else { 
     //redirect to safari because the user doesn't have Power BI 
     UIApplication.shared.openURL(NSURL(string: "http://powerbi.microsoft.com")! as URL) 
    } 
} 

基本上,我有一个按钮,单击它时应打开我在iPad上的Microsoft Power BI应用程序。不幸的是,我不断收到错误“这个程序不允许查询mspbi方案吗?我拥有的URI直接来自微软的网站。关于如何打开应用程序的想法?它总是跳过”if“并且直接转到”else “

+0

我想问一个跟进!所以我现在可以正确地使用这个按钮在我的iPad上打开Power BI应用程序......这让我非常兴奋。不过,我很乐意再进一步。我想根据用户在应用中导航的位置来更改URI/URL。例如,如果用户位于我的应用的第1页,我希望该按钮将他们引导至Power BI的登录页面。如果用户在我的应用的第2页,我希望按钮将他们引导到Power BI的项目页面。思考? – Davis

您需要的URL方案添加到应用程序的Info.plist

Apple Developer Documentation对于canOpenURL(_:)

重要

如果您的应用程序在iOS 9.0或链接后,您必须声明 要传递给此方法的URL方案。通过将 LSApplicationQueriesSchemes键添加到您的应用的Info.plist文件中来实现此目的。如果 为未使用该键声明的方案调用此方法,则无论是否安装了适当的应用程序,此方法 始终返回false。 要了解有关密钥的更多信息,请参阅LSApplicationQueriesSchemes

所以Info.plist创建一个新的Array与关键LSApplicationQueriesSchemes与价值mspbi添加项目。

+0

谢谢!我认为这只是我可以做的事情,如果我试图打开我自己的应用程序。那是错误的吗? – Davis

+0

它的工作!非常感谢你:) – Davis

+0

@Davis是的,你可以为任何定义他们的URL方案的第三方应用程序做到这一点 – Paolo

您有以下行添加到您的应用程序的Info.plist文件能够处理应用网址:

<key>LSApplicationQueriesSchemes</key> 
<array> 
    <string>mspbi</string> //not sure if this is the correct entry, you will have to check for the specific app 
    <string>uber</string> //as an example, this is the working entry for opening the Uber app from your app 
</array>