iOS StoreKit
简述:
本文讲解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的更多相关文章
- 个人整理的一些iOS Entitlements
收集了不少Entitlement,当然也肯定有遗漏.有的就是key的字面意思,就不多做解释.不过有的虽然字面意思好理解,不过具体的用处不太清楚,就写的Unknown use.在替换entitlemen ...
- <转>iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!
原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新 获取"产品付费数量等于0 ...
- 【转】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程
http://blog.csdn.net/xiaominghimi/article/details/6937097 //——2012-12-11日更新 获取"产品付费数量等于0这个问题& ...
- 【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取”产品付费数量等于0的问题”】
转的别人的 看到很多童鞋问到,为什么每次都返回数量等于0?? 其实有童鞋已经找到原因了,原因是你在 ItunesConnect 里的 “Contracts, Tax, and Banking”没有完成 ...
- 详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程
Himi 原创, 欢迎转载,转载请在明显处注明! 谢谢. 原文地址:http://blog.csdn.net/xiaominghimi/article/details/6937097 //——201 ...
- 开源 iOS 项目分类索引大全 - 待整理
开源 iOS 项目分类索引大全 GitHub 上大概600个开源 iOS 项目的分类和介绍,对于你挑选和使用开源项目应该有帮助 系统基础库 Category/Util sstoolkit 一套Cate ...
- iOS开发系列--通讯录、蓝牙、内购、GameCenter、iCloud、Passbook系统服务开发汇总
--系统应用与系统服务 iOS开发过程中有时候难免会使用iOS内置的一些应用软件和服务,例如QQ通讯录.微信电话本会使用iOS的通讯录,一些第三方软件会在应用内发送短信等.今天将和大家一起学习如何使用 ...
- IOS框架和服务
在iOS中框架是一个目录,包含了共享资源库,用于访问该资源库中储存的代码的头文件,以及图像.声音文件等其他资源.共享资源库定义应用程序可以调用的函数和方法. iOS为应用程序开发提供了许多可使用的框架 ...
- iOS的主要框架介绍
框架是一个目录,这个目录包含了共享库,访问共享库里代码的头文件,和其它的图片和声音的资源文件.一个共享库定义的方法或函数可以被应用程序调用. IOS提供了很多你可以在应用程序里调用的框架.要使用一个框 ...
随机推荐
- Humble Numbers(丑数) 超详解!
给定一个素数集合 S = { p[1],p[2],...,p[k] },大于 1 且素因子都属于 S 的数我们成为丑数(Humble Numbers or Ugly Numbers),记第 n 大的丑 ...
- 2017-2-20 C#基础 运算符
C#的运算符主要分五种:算数运算符,关系运算符,逻辑运算符,条件运算符,赋值运算符.算术运算符有 + - * / % ++ --;关系运算符有 == != > ...
- java装箱跟拆箱解析
/** * 在jdk1.5之后,java为基本数据类型到对应的应用数据类型提供了自动拆箱装箱操作 * 不管是自动拆箱还是自动装箱都是应用数据类型有的方法,基本数据类型是没有任何方法可调用的 *从概念上 ...
- Objective-C日记-之类别Category
类别Category 1,概述 为现有类添加新的方法,这些新方法的Objective-C的术语为“类别”. 2,用法 a,声明类别 @interface NSString(NumberConvenie ...
- WeMall微信商城源码插件代金券部分代码
WeMall微信商城源码插件Coupon代金券代码是用于商业推广的比较有效的方式,分享了部分比较重要的代码,供技术员学习参考 AdminController.class.php <?php na ...
- Spring Boot启动过程(四):Spring Boot内嵌Tomcat启动
之前在Spring Boot启动过程(二)提到过createEmbeddedServletContainer创建了内嵌的Servlet容器,我用的是默认的Tomcat. private void cr ...
- MySQL创建数据库与创建用户以及授权
1.create schema [数据库名称] default character set utf8 collate utf8_general_ci;--创建数据库 采用create schema和c ...
- 如何快速部署国人开源的 Java 博客系统 Tale
除了闷头专研技术之外,程序员还需要不断地写作进行技术积累,写博客是其中最重要的方式之一.商业博客平台不少,但是更符合程序员背景的方案,是自己开发一个博客平台或者使用开源的博客平台. 开源的博客平台多如 ...
- 【原创】有关Buffer使用,让你的日志类库解决IO高并发写
[本人原创],欢迎交流和分享技术,转载请附上如下内容: 作者:itshare [转自]http://www.cnblogs.com/itshare/ 通常我们知道,当一个日志借口被外部程序多个线程请求 ...
- iOS网络编程笔记——编写自己的网络客户端
编写网络客户端主要有四个步骤: (1)项目中引入Accounts和Social框架 Accounts框架中有进行用户账户认证所需类,Social框架提供了我们所需要的SLRequest类. (2)用户 ...