无法以编程方式从应用程序打开App Store

时间:2018-07-16 07:01:02

标签: c# xamarin xamarin.forms xamarin.ios

在进行版本升级时,我一直试图从我的应用程序打开/导航App Store。 为此,我写了customrender,它对于android来说效果很好。但这不适用于iOS。以下是为iOS customrenderer编写的代码。我在附件中附加了代码的屏幕截图。

public class OpenAppStore : UIViewController, ISKStoreProductViewControllerDelegate, IOpenStore
{
    public void OpenStore()
    {
        bool isSimulator = Runtime.Arch == Arch.SIMULATOR;
        if (!isSimulator)
        {
            var storeViewController = new SKStoreProductViewController();
            storeViewController.Delegate = this;
            var id = SKStoreProductParameterKey.ITunesItemIdentifier;
            var productDictionaryKeys = new NSDictionary("SKStoreProductParameterITunesItemIdentifier", 1389696261);
            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);
        }
    }
}

问题:它不会引发任何错误。 PresentViewController会被调用,但不会在App Store中导航/打开我的应用。

谢谢

1 个答案:

答案 0 :(得分:0)

首先,您不需要为此定制渲染器。您应该注入一个简单的帮助程序类,该类将为您支持的每个平台打开相应的应用程序商店。 其次,您用于iOS App Store的URL似乎不正确。使用类似的东西:

var url = new NSUrl($"https://itunes.apple.com/us/app/apple-store/{myAppId}?mt=8");

上面使用的应用商店URL来自Apple docs。然后,您可以打开该网址。