iOS App 中嵌入应用商店

来源:互联网 发布:linux下安装wine软件包 编辑:程序博客网 时间:2024/04/27 14:07
昨晚同事拿了一个app 发现其app 内部页面打开了appstore 并没有唤起手机自带的appstore, 刚开始以为是用webview 加载的
,可是自己些了一个demo 发现并不是那样一回事 用webview 加载appstore 地址 会被js 自动调起本地的appstore,

下面是我的发给同事的邮件 直接贴下来

我们都绕了弯路 一直以为是用webview 加载的。 我下班做了测试 发现用webview 加载appstore的地址 ,ios 会根据User-Agent 自动判断 唤起本地的app store,其效果跟用[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@“”]];是一样的。

后来我尝试改写User-Agent 发现打开的页面是电脑打开的页面一样的 并不是我们通过手机 打开app store 看到的页面。

后来我看苹果的文档 发现 他们提供了一个类SKStoreProductViewController专门来干这个事情的

https://developer.apple.com/library/ios/documentation/StoreKit/Reference/SKITunesProductViewController_Ref/Introduction/Introduction.html

实现效果如下图

需要引入的#import <StoreKit/StoreKit.h>delegateSKStoreProductViewControllerDelegate导入 StoreKit.framework
调用方式    [self openAppWithIdentifier:@"592043421"];#pragma mark - SKStoreProductViewControllerDelegate- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {    [viewController dismissViewControllerAnimated:YES completion:^{    }];}- (void)openAppWithIdentifier:(NSString *)appId {    SKStoreProductViewController *storeProductVC = [[SKStoreProductViewController alloc] init];    storeProductVC.delegate = self;        NSDictionary *dict = [NSDictionary dictionaryWithObject:appId forKey:SKStoreProductParameterITunesItemIdentifier];    [storeProductVC loadProductWithParameters:dict completionBlock:^(BOOL result, NSError *error) {        if (result) {            [self presentViewController:storeProductVC animated:YES completion:nil];        }    }];}
0 0