我正在尝试以编程方式在我的应用中打开应用商店应用。
我正在尝试做的是我正在调用当前应用版本的服务,如果需要更新,我应该打开应用商店应用程序让用户更新我的应用。
注意:该应用尚未发布到商店,我仍处于编码阶段。
我试图在ViewDidLoad方法中使用以下代码,但它无法正常工作(没有任何反应):
var nsurl = new NSUrl("itms://itunes.apple.com");
UIApplication.SharedApplication.OpenUrl(nsurl);
答案 0 :(得分:5)
通过itms:
的直接链接仅适用于实际设备,如果您在模拟器上进行测试,请使用https://itunes.apple.com/us/genre/ios/id36?mt=8
。
我建议在实际设备上使用itms://
链接,因为它会阻止用户在使用https://
链接打开iTunes时看到的重定向。
bool isSimulator = Runtime.Arch == Arch.SIMULATOR;
NSUrl itunesLink;
if (isSimulator)
{
itunesLink = new NSUrl("https://itunes.apple.com/us/genre/ios/id36?mt=8");
}
else
{
itunesLink = new NSUrl("itms://itunes.apple.com");
}
UIApplication.SharedApplication.OpenUrl(itunesLink, new NSDictionary() { }, null);
您可能需要考虑使用SKStoreProductViewController
将用户置于应用内部,而不是在设备上打开外部商店应用:
bool isSimulator = Runtime.Arch == Arch.SIMULATOR;
if (!isSimulator)
{
var storeViewController = new SKStoreProductViewController();
storeViewController.Delegate = this;
var id = SKStoreProductParameterKey.ITunesItemIdentifier;
var productDictionaryKeys = new NSDictionary("SKStoreProductParameterITunesItemIdentifier", 123456789);
var parameters = new StoreProductParameters(productDictionaryKeys);
storeViewController.LoadProduct(parameters, (bool loaded, NSError error) =>
{
if ((error == null) && loaded)
{
this.PresentViewController(storeViewController, true, () =>
{
Console.WriteLine("SKStoreProductViewController Completed");
});
}
if (error != null)
{
throw new NSErrorException(error);
}
});
}
else
{
var itunesLink = new NSUrl("https://itunes.apple.com/us/genre/ios/id36?mt=8");
UIApplication.SharedApplication.OpenUrl(itunesLink, new NSDictionary() { }, null);
}
答案 1 :(得分:2)
NSBundle.MainBundle.InfoDictionary["CFBundleVersion"]
返回当前的应用版本。
要打开Apple Appstore,只需让用户导航到appstore链接,Apple就会自动检测到用户正在使用iPhone并为他们打开Appstore。
测试自己:
在safari中打开以下链接:Whatsapp in the Appstore
它会自动打开appstore。
答案 2 :(得分:2)
当您在iTunesConnect上创建应用时,即使您尚未发布该应用,也可以在AppStore中获取未来应用的网址。您可以在“应用信息”选项卡下找到它:
在您的应用中,您可以打开它:
var nsurl = new NSUrl("https://itunes.apple.com/us/app/mygreatapp/id123456789");
UIApplication.SharedApplication.OpenUrl(nsurl);