如何以编程方式检查并打开现有应用程序 - Swift 4

时间:2018-01-03 07:00:15

标签: ios swift app-store

我想检查手机中是否安装了应用程序。如果它已经安装,我想发布相同的。如果没有安装,我需要打开Appstore链接。

我可以从网址

打开Appstore
https://itunes.apple.com/us/app/stack-ar/id1269638287?mt=8

使用以下代码,

let urlString = "https://itunes.apple.com/us/app/stack-ar/id1269638287?mt=8"
UIApplication.shared.open(URL(string: urlString)!, options: [:]) { (success) in

        }

如果安装了应用程序,我该如何打开它?

2 个答案:

答案 0 :(得分:1)

要从您的应用程序打开另一个应用程序,目标应用程序需要实现URL方案。有些应用程序会记录其URL方案,而有些则不会。您可能需要询问目标应用程序的开发人员或查看Info.plist文件。

如果应用程序没有实现URL方案,则无法启动它(我知道)。

如果它确实实现了URL Scheme,您需要在应用中将该方案列入白名单。您可以将LSApplicationQueriesSchemes添加到Info.plist,如下所示:

enter image description here

该图像显示了与Facebook和Twitter对应的URL Schemes的白名单。根据您要打开的应用进行调整。

完成后,您可以使用UIApplication.sharedApplication().canOpenURL(...)检查应用是否已安装,UIApplication.sharedApplication().openURL(...)以打开目标应用。

我还建议使用SKStoreProductViewController在App Store中展示应用,而不是打开Safari。通过这种方式,可以直接在您的应用程序中显示App Store,而无需离开。

答案 1 :(得分:-1)

使用Url方案打开第三方应用程序。

var profile = "instagram://user?username=johndoe"
var instagramUrl = NSURL(string: profile)

if UIApplication.sharedApplication().canOpenURL(instagramUrl!) {  
    UIApplication.sharedApplication().openURL(instagramUrl!)

} else {
    //redirect to safari because the user doesn't have Instagram
    UIApplication.sharedApplication().openURL(NSURL(string: "http://instagram.com/")!)
}