简述:
本文讲解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提供了很多你可以在应用程序里调用的框架.要使用一个框 ...
随机推荐
-
git提示:Fatal:could not fetch refs from ....
在git服务器上新建项目提示: Fatal:could not fetch refs from git..... 百度搜索毫无头绪,最后FQgoogle,找到这篇文章http://www.voidcn ...
-
rsync+inotify实现实时同步案例--转
转自:http://chocolee.blog.51cto.com/8158455/1400596 随着应用系统规模的不断扩大,对数据的安全性和可靠性也提出的更好的要求,rsync在高端业务系统中也逐 ...
-
Encode and Decode Strings
Design an algorithm to encode a list of strings to a string. The encoded string is then sent over th ...
-
svn cleanup failed–previous operation has not finished 解决方法
今天svn遇到一个头疼的问题,最开始更新的时候失败了,因为有文件被锁住了.按照以往的操作,我对父目录进行clean up操作,但是clean up 操作也失败了! svn cleanup failed ...
-
ASP.NET 后台下载文件方法
void DownLoadFile(string fileName) { string filePath = Server.MapPath(fileName);//路径 //以字符流的形式下载文件 F ...
-
[Python][MachineLeaning]Python Scikit-learn学习笔记1-Datasets&;Estimators
Scikit-learn官网:http://scikit-learn.org/stable/index.html Datasets 标准的数据集格式为一组多维特征向量组成的集合.数据集的标准形状(sh ...
-
android 中动画
详解Android动画之Frame Animation 写出动画效果的xml文件布局基本代码如下: <?xml version="1.0" encoding="ut ...
-
微信自用高性能通用key-value组件MMKV已开源!
1.MMKV简介 腾讯微信团队于2018年9月底宣布开源 MMKV ,这是基于 mmap 内存映射的 key-value 组件,底层序列化/反序列化使用 protobuf 实现,主打高性能和稳定性.近 ...
-
解决Linux服务器tomact-8.0启动慢的问题
环境信息: CentOS release 6.8 tomcat-8.0 JDK1.8 一.启动tomcat #sh /root/tomcat-8.0/bin/startup.sh #tailf /ro ...
-
什么是RNA-Seq (RNA Sequencing)
什么是RNA-Seq (RNA Sequencing) 2011-07-14 ~ ADMIN 随着ome为词尾的各种组学的出现,转录组学已经成为了人们了解生物信息的一个重要组成部分.人们使用了许多办法 ...