アプリを作成していますが、他のアプリを宣伝するバナーがあります。これは私のコードです:
var barsButton : UIButton = UIButton(frame: CGRectMake((self.view.bounds.width / 2) - 51, self.view.bounds.height - 100, 102, 30))
barsButton.setImage(UIImage(named: "Bars Icon 2.png"), forState: .Normal)
barsButton.addTarget(self, action: "openBarsLink", forControlEvents: UIControlEvents.TouchUpInside)
func openBarsLink() {
var barsLink : String = "itms-apps:https://iTunes.Apple.com/app/bars/id706081574?mt=8"
UIApplication.sharedApplication().openURL(NSURL.URLWithString(barsLink))
}
ただし、ユーザーがボタンを押すと、アプリの特定のページではなく、App Storeに移動します。何が悪いのですか?
URLのプロトコルが多すぎます。取り除く https:
したがって、URLは
itms-apps://iTunes.Apple.com/app/bars/id706081574
以前の回答をフォローしただけでは機能しなかったので、ここに完全な解決策を投稿します。
var url = NSURL(string: "itms-apps://iTunes.Apple.com/app/bars/id706081574")
if UIApplication.sharedApplication().canOpenURL(url!) {
UIApplication.sharedApplication().openURL(url!)
}
短い「itms://」だけを使用してください。
Swiftの場合、これはスニペットです。
UIApplication.shared.openURL(URL(string: "itms://iTunes.Apple.com/app/id" + appStoreAppID)!)
これが誰かの役に立つことを願っています。
乾杯。
追伸@Eric Ayaは時代を先取りしていました:)
Swift 3-XCode 8.2.1
UIApplication.shared.openURL(URL(string: "itms-apps://iTunes.Apple.com/app/id" + appStoreAppID)!)
私はこの問題を抱えていましたが、このコードはシミュレータではなく電話でのみ機能します。だからこのコードを確認してください:
if let url = URL(string: "itms-apps://iTunes.Apple.com/app/id" + APP_ID ),
UIApplication.shared.canOpenURL(url){
UIApplication.shared.openURL(url)
}else{
//Just check it on phone not simulator!
print("Can not open")
}
単にこれらの関数をユーティリティ構造体で使用して、アプリストアのgoto appページに移動することもできますrate appに直接移動することもできます:
static func gotoApp(appID: String, completion: ((_ success: Bool)->())? = nil) {
let appUrl = "itms-apps://iTunes.Apple.com/app/id\(appID)"
gotoURL(string: appUrl, completion: completion)
}
static func rateApp(appId: String, completion: ((_ success: Bool)->())? = nil) {
//let appUrl = "itms-apps://iTunes.Apple.com/app/" + appId
let appUrl = "https://iTunes.Apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?id=\(appId)&pageNumber=0&sortOrdering=2&type=Purple+Software&mt=8"
//TODO: use &action=write-review for opening review directly
print("app review URL: ", appUrl)
gotoURL(string: appUrl, completion: completion)
}
static func gotoURL(string: String, completion: ((_ success: Bool)->())? = nil) {
print("gotoURL: ", string)
guard let url = URL(string: string) else {
print("gotoURL: invalid url", string)
completion?(false)
return
}
if #available(iOS 10, *) {
UIApplication.shared.open(url, options: [:], completionHandler: completion)
} else {
completion?(UIApplication.shared.openURL(url))
}
}
開こうとしているリンクは無効です-https:スキーマを削除してください(またはitms:-リダイレクトを避けるために最初のオプションをお勧めします)
OpenURLはiOS 10で非推奨になっているため、以下のコードを使用します。
UIApplication.shared.open((URL(string: "itms://iTunes.Apple.com/app/" + appStoreAppID)!), options:[:], completionHandler: nil)