Trying to build a tvOS app and one of the use cases I have is to be able to link off and open another app in the Apple TV App Store directly on a button click. Can someone please share a code snippet to enable this?
问题:
回答1:
I have figured this out by examining the device console output. The trick is to use the com.apple.TVAppStore
scheme instead of itms-apps
. Example (Swiss App Store):
com.apple.TVAppStore://itunes.apple.com/ch/app/youtube/id544007664?mt=8
In fact, the https
scheme is also working, but it's then transformed into com.apple.TVAppStore
anyway.
回答2:
Just tested this on tvOS:
if let appStoreURL = NSURL(string: "https://itunes.apple.com/us/app/wee-puzzles/id1035425291?mt=8") {
UIApplication.sharedApplication().openURL(appStoreURL)
}
It works and opens the App Store page of your app on Apple TV. It's the same as iOS.
回答3:
Unfortunately this is not possible with the current tvOS.
On iOS, as advised by Apple in QA1629, we would do:
NSString *iTunesLink = @"https://itunes.apple.com/us/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];
The above request goes through Safari which does not exist on tvOS. Therefore, it won't work.
However, Custom URL Schemes are supported on tvOS which might help at least a bit.
回答4:
Yes, it works ! Just use the link provided by Apple's link maker. For example:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://geo.itunes.apple.com/fr/app/math-champions-jeux-calcul/id561572290?mt=8"]]
Do not modify the link by removing the language or the name of the app like you can on iOS.
回答5:
Should be possible using SKStoreProductViewController
in StoreKit.
But apparently, that too is _TVOS_PROHIBITED
.
SKStoreProductViewController Class Reference
回答6:
You can use the URL you get from iTunes. For example:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://geo.itunes.apple.com/fr/app/math-champions-jeux-calcul/id561572290?mt=8"]]
Similar to what the above answers said. But, in order for this to work, your app must be set up as a universal purchase for iOS and tvOS, which is very easy to set up: Universal Purchase of iOS and tvOS Apps.
回答7:
This is the solution for Swift 4:
Replace XXXXXXX
with your app id.
With this solution its possible to create an appstore link for a not yet released app because only the app id (known from appstore connect) is needed.
guard let tvOSAppStoreUrl = URL(string: "com.apple.TVAppStore://itunes.apple.com/app/idXXXXXXX?mt=8") else {
return
}
UIApplication.shared.open(url, options: [:], completionHandler: nil)