如何链接到我们的应用

时间:2015-09-08 14:14:01

标签: ios iphone app-store openurl

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

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

我可以在openURL调用中将当前版本作为查询字符串参数传递,还是有另一种方法可以确保显示“更新”按钮?我找不到有关如何操作的最新文档。 (我发现的所有东西都是几年之久,并且指的是已停产的phobos工具。)

5 个答案:

答案 0 :(得分:12)

我建议您尝试 SKStoreProductViewController 类。 iTunes项目标识符可在https://itunesconnect.apple.com - >中找到我的应用 - > Apple ID

<强>迅速

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")

<强>目标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];
}

答案 1 :(得分:3)

From News and Announcement For Apple Developers

  

使用iTunes将客户直接带到App Store上的应用程序   链接通过iTunes链接,您可以轻松地为您的客户提供服务   直接从您的网站访问App Store上的应用程序的方法   营销活动。创建iTunes链接很简单,可以制作   将客户引导至单个应用,所有应用或应用   指定了您公司名称的特定应用程序。

     

将客户发送到特定应用程序:   http://itunes.com/apps/appname

     

要将客户发送到App Store上的应用列表,请执行以下操作:   http://itunes.com/apps/developername

     

将客户发送到包含您公司名称的特定应用   网址: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链接应更新为appstore.com/apps。见上面的QA1633,已经更新。新的QA1629建议了从应用程序启动商店的这些步骤和代码:

  1. 在您的计算机上启动iTunes。
  2. 搜索您要链接的项目。
  3. 右键单击或按住Control键并单击iTunes中项目的名称,然后 选择&#34;复制iTunes Store URL&#34;从弹出菜单中。
  4. 在您的应用程序中,使用复制的iTunes创建NSURL对象 URL,然后将此对象传递给UIApplication&#39; s openURL:方法 在App Store中打开您的项目。
  5. 示例代码:

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

    here复制。

答案 2 :(得分:0)

我想为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);
}

然后,您调用此代码的控制器需要实现接口&#39; ISKStoreProductViewControllerDelegate&#39;取消&#39;取消&#39;按钮工作。然后&#39;这个&#39;可分配给代表&#39;属性。

public partial class MyCurrentController : ISKStoreProductViewControllerDelegate {

        async void PromptForVersionUpgrade() { ... }

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

        ...
}

答案 3 :(得分:0)

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

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

我们通知用户在Updates应用程序上打开App Store标签,如果看不见UPDATE按钮,则下拉菜单进行刷新:/

答案 4 :(得分:0)

appID = https://itunesconnect.apple.com -> 我的应用 -> 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)