简述:

  本文讲解iOS系统框架StoreKit中的SKStoreProductViewController与SKStoreReviewController这两个Controller。

SKStoreProductViewController

  这个是系统自带的控制器类,用于在我们的应用内展示AppStore中App的界面,是iOS6.0之后系统对我们开放的。

  注意:模拟器是没有AppStore,所以使用这个控制器时请用真机调试或者写个判断在模拟器时不执行。

  内容不多,就一个代理与一个对象方法。

// Delegate for product page events
@property(nonatomic, assign, nullable) id <SKStoreProductViewControllerDelegate> delegate NS_AVAILABLE_IOS(6_0);

  这个代理是必须遵守的,因为我们需要用到它的代理方法。

// Load product view for the product with the given parameters.  See below for parameters (SKStoreProductParameter*).
// Block is invoked when the load finishes.
- (void)loadProductWithParameters:(NSDictionary<NSString *, id> *)parameters completionBlock:(nullable void(^)(BOOL result, NSError * __nullable error))block NS_AVAILABLE_IOS(6_0);

  loadProductWithParameters:completionBlock:接收两个参数:(1)一个字典:用一个key指定我们想要显示给用的程序的标示符。(2)一个completion block。

  这个是加载方法,需要执行这个方法后,控制器才会有内容,否则就是一片空白,如下图:

// Sent if the user requests that the page be dismissed
- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController __TVOS_PROHIBITED NS_AVAILABLE_IOS(6_0);

  这个是代理方法,控制器显示完成后,左上角的取消按钮的点击回调方法。

用法代码:

  这个类,内容不多,所以用法也很简单。

  SKStoreProductViewController *productVC = [[SKStoreProductViewController alloc] init];
    productVC.delegate = self;
    [productVC loadProductWithParameters:@{SKStoreProductParameterITunesItemIdentifier : @"要显示的App的id"} completionBlock:^(BOOL result, NSError * _Nullable error) {
        DMLog(@"result: %d, error: %@", result, error);
    }];
    [self presentViewController:productVC animated:YES completion:nil];

  注意一点: SKStoreProductViewController以模态方式显示。当用户打算离开App Store时我们负责解除(隐藏)SKStoreProductViewController。

  然后就是代理方法,当用户点击左上角的取消按钮时的回调处理。

- (void)productViewControllerDidFinish:(SKStoreProductViewController *)viewController {
    [viewController dismissViewControllerAnimated:YES completion:nil];
}

  注意: 这个方法必须执行,否则当用户点击取消按钮时将毫无反应。

要显示的App的id的获取方法

  1. 如果要显示的是你或你们自己开发的App,可以在iTunes Connect中查到。

    步骤:登录iTunes Connect -> 点击我的App -> 点击要显示的App ->

  2. 如果是要展示别人的App,可以在iTunes中取到App的链接,链接中有该App的ID。

    这里以QQ为例:

    在搜索框中输入要显示的App的名称,选择在iTunes Store搜索:

拷贝出来的链接大致为:https://itunes.apple.com/cn/app/qq/id44****666?mt=8

id后面的44****666就是该App的AppID。

SKStoreReviewController

  这个是近期才出来的,iOS10.3开始才有的,用来在App应用内部为App评星级的控制器。

  注意:这个Controller类是Xcode8.3的StoreKit中才有的,在Xcode8.3之下会报错;并且只对iOS10.3系统才生效,10.3之下没有任何反应。

/** Request StoreKit to ask the user for an app review. This may or may not show any UI.
 *
 *  Given this may not succussfully present an alert to the user, it is not appropriate for use
 *  from a button or any other user action. For presenting a write review form, a deep link is
 *  available to the App Store by appending the query params "action=write-review" to a product URL.
 */
+ (void)requestReview;

  可以看见它只有这么一个类方法。

用法代码:

[SKStoreReviewController requestReview];

  在要显示的地方加入这句代码即可。

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #c35900 }
span.s1 { }
p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Menlo; color: #cf8724 }
span.s1 { }

iOS StoreKit的更多相关文章

  1. 个人整理的一些iOS Entitlements

    收集了不少Entitlement,当然也肯定有遗漏.有的就是key的字面意思,就不多做解释.不过有的虽然字面意思好理解,不过具体的用处不太清楚,就写的Unknown use.在替换entitlemen ...

  2. <转>iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!

    原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新   获取"产品付费数量等于0 ...

  3. 【转】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程

    http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新   获取"产品付费数量等于0这个问题& ...

  4. 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取”产品付费数量等于0的问题”】

    转的别人的 看到很多童鞋问到,为什么每次都返回数量等于0?? 其实有童鞋已经找到原因了,原因是你在 ItunesConnect 里的 “Contracts, Tax, and Banking”没有完成 ...

  5. 详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程

    Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢. 原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——201 ...

  6. 开源 iOS 项目分类索引大全 - 待整理

    开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...

  7. iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总

    --系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...

  8. IOS框架和服务

    在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法. iOS为应用程序开发提供了许多可使用的框架 ...

  9. iOS的主要框架介绍

    框架是一个目录,这个目录包含了共享库,访问共享库里代码的头文件,和其它的图片和声音的资源文件.一个共享库定义的方法或函数可以被应用程序调用. IOS提供了很多你可以在应用程序里调用的框架.要使用一个框 ...

随机推荐

  1. PDO预处理语句规避SQL注入攻击

    所谓SQL注入式攻击,就是攻击者把SQL命令插入到Web表单的输入域或页面请求的查询字符串,欺骗服务器执行恶意的SQL命令.在某些表单中,用户输入的内容直接用来构造(或者影响)动态SQL命令,或作为存 ...

  2. 《类型编程晋级——shapeless类库使用指南》前言及第一章翻译

    从年初开始进行此项工作,我和合作伙伴包亮付出了大量而艰辛的劳动,现基本翻译完毕,有出版意向,如果有意向欢迎联系,不甚感激!也欢迎各位博友对此翻译提出意见建议以及指导如何出版,在此谢过! 前言 时间回到 ...

  3. 使用grunt实现web自动化

    1.grunt作用        实现压缩.编译.单元测试等重复性工作 2.需要安装的软件          第一步:从官网获取nodejs的软件包,直接双击进行安装(windows下) 第二步:打开 ...

  4. 类中的两大类(string类、math类)的应用

    类是我们在学习C#的过程中很关键也是特别容易让人蒙逼得地方,类的应用直接可以调用它的属性和方法来进行判断和验证 string类(也叫字符串类) C#中的String类很有用,下面是一些它的常用方法的总 ...

  5. Troubleshooting OpenStack 瘫痪 - 每天5分钟玩转 OpenStack(160)

    这是 OpenStack 实施经验分享系列的第 10 篇.是软件就会有 bug,OpenStack 也不例外,只要用它就一定会遇到故障.Troubleshooting(故障排除)是运维 OpenSta ...

  6. (九)javaScript的基本使用

    <script type="text/javascript"> var userName; var userAge; function interInfo(){ use ...

  7. 2429: [HAOI2006]聪明的猴子

    2429: [HAOI2006]聪明的猴子 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 448  Solved: 309[Submit][Statu ...

  8. SSH登录与增删改查demo详解+源代码

    点击下载,测试绝对可用SSH整合框架登录加增删改查demo 下载地址:http://download.csdn.net/detail/qq_33599520/9784679   一.框架概述 spri ...

  9. View 的measure 和onMeasure

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px "PingFang SC"; color: #454545 } p.p2 ...

  10. JAVA连接数据库后,对数据库进行增删改查

    1.Statement 增删改: 方法:execute(String SQL) String url="jdbc:Access:///E://A//shop.mdb"; Conne ...