如何 link 更新我们应用程序的页面

How to link to Update page for our app

如果 运行 版本过时,我们会提示用户升级他们的应用。当用户点击我们的更新按钮时,我使用地址为 itms://itunes.apple.com/us/app/our-app-title/id12345?mt=8 的 openURL 将 App Store 应用程序加载到我们应用程序的列表中。

但是,使用该方法,生成的屏幕有一个标记为 "Open" 而不是 "Update." 的按钮 如果用户首先打开 App Store 应用程序,然后导航到我们应用程序的列表(或转到更新选项卡),该按钮标记为 "Update."

我能否在 openURL 调用中将当前版本作为查询字符串参数传递,或者是否有其他方法确保显示“更新”按钮?我找不到关于如何这样做的当前文档。 (我找到的所有东西都是几年前的,指的是已停产的 phobos 工具。)

我建议您尝试 SKStoreProductViewController class。 iTunes 项目标识符可以在 https://itunesconnect.apple.com -> 我的应用程序 -> Apple ID.

中找到

swift:

func openStoreProductWithiTunesItemIdentifier(identifier: String) {
    let storeViewController = SKStoreProductViewController()
    storeViewController.delegate = self

    let parameters = [ SKStoreProductParameterITunesItemIdentifier : identifier]
    storeViewController.loadProductWithParameters(parameters) { [weak self] (loaded, error) -> Void in
        if loaded {
            // Parent class of self is UIViewContorller
            self?.presentViewController(storeViewController, animated: true, completion: nil)
        }
    }
}

func productViewControllerDidFinish(viewController: SKStoreProductViewController) {
    viewController.dismissViewControllerAnimated(true, completion: nil)
}
// Usage
openStoreProductWithiTunesItemIdentifier("2321354")

objective-c:

- (void)openStoreProductViewControllerWithITunesItemIdentifier:(NSInteger)iTunesItemIdentifier {
    SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init];

    storeViewController.delegate = self;

    NSNumber *identifier = [NSNumber numberWithInteger:iTunesItemIdentifier];

    NSDictionary *parameters = @{ SKStoreProductParameterITunesItemIdentifier:identifier };
    UIViewController *viewController = [self topViewController];
    [storeViewController loadProductWithParameters:parameters
                                   completionBlock:^(BOOL result, NSError *error) {
                                       if (!result) {
                                           NSLog(@"SKStoreProductViewController: %@", error);
                                       }
                                   }];
    [viewController presentViewController:storeViewController animated:YES completion:nil];
    [storeViewController release];
}

From News and Announcement For Apple Developers.

Drive Customers Directly to Your App on the App Store with iTunes Links With iTunes links you can provide your customers with an easy way to access your apps on the App Store directly from your website or marketing campaigns. Creating an iTunes link is simple and can be made to direct customers to either a single app, all your apps, or to a specific app with your company name specified.

To send customers to a specific application: http://itunes.com/apps/appname

To send customers to a list of apps you have on the App Store: http://itunes.com/apps/developername

To send customers to a specific app with your company name included in the URL: http://itunes.com/apps/developername/appname

补充说明:

您可以将 http:// 替换为 itms://itms-apps:// 以避免重定向。

有关命名的信息,请参阅 Apple QA1633:

https://developer.apple.com/library/ios/#qa/qa1633/_index.html.

编辑(截至 2015 年 1 月):

itunes.com/apps links 应该更新到 appstore.com/apps。请参阅上面的 QA1633,它已更新。新的 QA1629 建议使用以下步骤和代码从应用程序启动商店:

  1. 在您的计算机上启动 iTunes。
  2. 搜索您想要 link 的项目。
  3. Right-click 或 control-click 在 iTunes 中的项目名称上,然后 从 pop-up 菜单中选择 "Copy iTunes Store URL"。
  4. 在您的应用程序中,使用复制的 iTunes 创建一个 NSURL 对象 URL,然后将此对象传递给 UIApplication 的 openURL: 方法 在 App Store 中打开您的项目。

示例代码:

NSString *iTunesLink = @"itms://itunes.apple.com/us/app/apple-store/id375380948?mt=8";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:iTunesLink]];

复制自 here

我想为 Xamarin 用户提供一个答案。以下内容会弹出一个更新提示,然后将用户带到商店。

async void PromptForVersionUpgrade()
{
        var alertController = UIAlertController.Create(Messages.NewVersionTitle, Messages.NewVersionText, UIAlertControllerStyle.Alert);

        alertController.AddAction(UIAlertAction.Create("Cancel", UIAlertActionStyle.Cancel, null));

        alertController.AddAction(UIAlertAction.Create(Messages.NewVersionGoToAppStore, UIAlertActionStyle.Default, (obj) =>
        {
            var storeViewController = new SKStoreProductViewController();
            storeViewController.Delegate = this;
            storeViewController.LoadProduct(new StoreProductParameters { ITunesItemIdentifier = 999999999 }, (isLoaded, error) =>
            {
                if (isLoaded)
                    PresentViewController(storeViewController, true, null);
            });
        }));

        PresentViewController(alertController, true, null);
}

然后您从中调用此代码的控制器将需要实现接口 'ISKStoreProductViewControllerDelegate' 以使 'Cancel' 按钮起作用。然后'this'赋值给'Delegate'属性.

public partial class MyCurrentController : ISKStoreProductViewControllerDelegate {

        async void PromptForVersionUpgrade() { ... }

        [Export("productViewControllerDidFinish:")]
        public void Finished(SKStoreProductViewController controller)
        {
            controller.DismissViewController(true, null);
        }

        ...
}

只需将 1166632935 替换为您的应用程序 ID - Swift 4

UIApplication.shared.open(URL(string: "itms://itunes.apple.com/app/id1166632935")!, options: [:])

我们通知用户打开 App Store 应用程序上的 Updates 选项卡,如果 UPDATE 按钮不可见,请下拉刷新:/

appID = https://appstoreconnect.apple.com/ -> 我的应用程序 -> 'MyAPP' -> 应用程序信息 -> 在常规信息部分显示 Apple ID。

Swift 5:

let params = [SKStoreProductParameterITunesItemIdentifier: appID]
let storeProductVC = SKStoreProductViewController()
storeProductVC.delegate = self
storeProductVC.loadProduct(withParameters: params)
self.present(storeProductVC, animated: true, completion: nil)