[置顶] ios App 中嵌入应用商店

昨晚同事拿了一个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


调用方式
    [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];
        }
    }];
}

另外 本人打算十一后离职换份工作,哪位仁兄公司有意向 站内信联系,帮忙内推下哈.

再打下广告哈 我搭建的个人博客 也已经上线了 引用的是hexo , 地址是hufeng825.github.com  ui配色再微调中,对ie10 以下支持不太好 建议用chrome Firefox  或者safrari 浏览 另外也已经对移动设备做了响应是布局.

原文地址:https://www.cnblogs.com/suncoolcat/p/3315246.html