可以在不离开应用的情况下打开App Store链接吗?

时间:2014-03-04 04:58:11

标签: ios objective-c

在iOS应用中, 我随时调用此函数打开app store,

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"itms-apps://app-url"]];


原始应用将被停用。 然后用户在退出App Store后必须重新启动原始应用程序。 这是非常不方便的安装方式。

有没有办法在不离开应用程序的情况下打开App Store链接?


例如,打开为弹出窗口, 安装后只需关闭弹出窗口,我就可以看到原始应用程序。


已更新:

我找到了一个很好的例子! 喜欢这个游戏的弹出窗口。

open app store as in app popup, example

2 个答案:

答案 0 :(得分:6)

是的,我们可以在不离开IOS 6+中的现有应用的情况下打开App store链接。 你可以在下面使用它。

 #import <StoreKit/StoreKit.h>
SKStoreProductViewController *storeController = [[SKStoreProductViewController alloc] init];
    storeController.delegate = delegate;
    NSDictionary *productParameters = @{ SKStoreProductParameterITunesItemIdentifier : appStoreID };
[storeController loadProductWithParameters:productParameters completionBlock:^(BOOL result, NSError *error) {
//Handle response
}

由于

答案 1 :(得分:1)

我的版本在这里。

1)#import <StoreKit/StoreKit.h>并设置SKStoreProductViewControllerDelegate
2)添加委托响应方法,

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController
{
    // if user do cancel, close it
    [viewController dismissViewControllerAnimated:YES completion:nil];
}

3)添加商店开放代码。

void SomeClassName::openAppStore(string appStoreId, string appUrl)
{
    // below iOS 6.0
    NSString *appUrlStatic = [NSString stringWithUTF8String:appUrl.c_str()];

    // iOS 6.0 or above, appstore id is 9-digin number
    NSString *appId = [NSString stringWithUTF8String:appStoreId.c_str()];;

    // check SKStoreProductViewController API exist or not
    if(NSClassFromString(@"SKStoreProductViewController")) {

        SKStoreProductViewController *storeController = [[SKStoreProductViewController alloc] init];
        storeController.delegate = self;

        NSDictionary *productParameters = @{ SKStoreProductParameterITunesItemIdentifier : appId };

        [storeController loadProductWithParameters:productParameters completionBlock:^(BOOL result, NSError *error) {
            if (result) {
                [self presentViewController:storeController animated:YES completion:nil];
            } else {
                [[[UIAlertView alloc] initWithTitle:@"Error Occur"
                                            message:@"Error to open App Store."
                                           delegate:nil
                                  cancelButtonTitle:@"Ok"
                                  otherButtonTitles: nil] show];
            }
        }];

        [storeController release];

    } else {
        [[UIApplication sharedApplication] openURL:[NSURL URLWithString:appUrlStatic]];
    }


}