SwiftyiRate中文说明
SwiftyiRate Github
SwiftyiRate Swift语言实现的app内评分,简单易用。
- Requirements
- Integration
- Usage
- Configuration
- Advanced properties
- Methods
- Delegate methods
- Localisation
- Example Projects
- Advanced Example
- Release Notes
Requirements
- iOS 7.0+
- Xcode 7
Integration
CocoaPods (iOS 8+)
你可以使用 Cocoapods 来安装 SwiftyiRate
,添加pod
pod 'SwiftyiRate'
Podfile
:
platform :ios, '8.0'
use_frameworks!
target 'MyApp' do
pod 'SwiftyiRate', :git => 'https://github.com/PlayApple/SwiftyiRate.git'
end
Usage
Initialization
Add code in AppDelegate.swift
import SwiftyiRate
override class func initialize () {
//configure iRate
SwiftyiRate.sharedSwiftyiRate.daysUntilPrompt = 5
SwiftyiRate.sharedSwiftyiRate.usesUntilPrompt = 15
}
Configuration
SwiftyiRate类里面所有可配置的参数和接口全部列举在下面:
var appStoreID: Int?
这个必须匹配你的app apple id( iTunes Connect后台中app详情下可以看到),通常情况下你无需自己设置该id,SwiftyiRate会通过网络自动从app store获取app具体数据。无网络或者app未上架则无法获取。(此时可以通过设置为其他已经上线的app id用于测试)
var appStoreGenreID: Int?
app类型id,用于区分app为应用还是游戏类型,从而显示不同的rate信息提示框。自动从app store获取app具体数据,无需自己设置。
var appStoreCountry: Int?
两个字母的设备国家码,用于本地化语言,默认读取手机所在地区。如果你想永远出现固定国家语言,则可以修改你想要的国家代码。
var applicationName: String
app名称,默认读取自info.plist。你可以自定义为其他名称。
var applicationBundleID: String?
app的bundle ID,用于获取appStoreID和appStoreGenreID,默认读取自info.plist。无需自行修改。(除非你是测试情况下)。
var daysUntilPrompt: Float
至少使用天数,距离用户首次启动app超过该天数,才会提示用户评分。支持小数,0.5表示12小时。默认值:10。
var usesUntilPrompt: Int
至少使用(启动)次数,防止长时间未使用app,启动app后就出现评分情况。至少使用天数和至少使用(启动)次数同时满足才会提示用户评分。默认值10次。
var eventsUntilPrompt: Int
可提示事件次数,应用或者游戏在某一个使用场景下适合提示用户评分的话,你可以记录一次事件,类似usesUntilPrompt,至少使用天数和可提示事件次数同时满足才会提示用户评分。默认值10次。
var usesPerWeekForPrompt: Float
平均每次使用app次数,注意SwiftyiRate会计算app总使用次数除以距离安装的时间来计算每周使用平均值,只有超过这个值,才会允许评分,长时间不使用app,可能计算出来的平均每周次数为0。默认值0。
var remindPeriod: Float
下一次提示玩家的周期天数,玩家选择稍后提醒后,下一次提示的间隔天数。默认值1天。
var messageTitle: String
评分对话框的标题,如果你不想出现标题,可以设置为空字符串。
var message: String
评分对话框的文本信息,注意不要设置特别长(体验不好)。如果你不想出现文本信息,可以设置为空字符串。
var updateMessage: String
该文本信息用于新版本中已经在旧版本中评分过的用户,默认值用的message的值。
var cancelButtonLabel: String
评分对话框中取消评分按钮标题
var rateButtonLabel: String
评分对话框中前往评分按钮标题
var remindButtonLabel: String
评分对话框中稍后提示按钮标题,设置为空字符串则不出现该按钮。
var useAllAvailableLanguages: Bool
支持本地化语言,不管你是否已经本地化了app,SwiftyiRate默认会使用SwiftyiRate.bundle下语言包,
如果你希望使用自己的本地化文件,请设置为false。默认值为true(所使用的本地化key下面有介绍)
var promptForNewVersionIfUserRated: Bool
每个新版本都提示用户评分,由于app store会清空新版的评分,所以默认下SwiftyiRate每个版本都会提示用户评分,直到用户选择了拒绝评分。默认值false
var onlyPromptIfLatestVersion: Bool
仅在最新版本中提示用户评分,默认为true。设置为false的话,如果用户未使用最新版本,也会提示用户评分。
var onlyPromptIfMainWindowIsAvailable: Bool
mac app的提示框设置,该功能开发中…
var promptAtLaunch: Bool
是否启动app就提示用户评分(满足条件下),如果你设置为false,启动app时候不会弹出评分框,但是评分条件会继续执行并跟踪。你可以使用该选择自定义一些自己的评分框弹出时机和方式。默认值:true
var verboseLogging: Bool
是否打印log到Xcode控制台,默认false。release版注意设置为false。
var previewMode: Bool
预览模式,如果设置为true,在promptAtLaunch=true情况下会忽略弹出条件,直接弹出用户评分框,你可以用于测试。release版本注意设置为false,默认值false。
Advanced properties
如果SwiftyiRate默认规则和UI不满足你的要求,你可以通过下面的delegate协议和内部状态实现自定义。
var ratingsURL: NSURL?
app的评分网址,自动获取。
var firstUsed: NSDate?
app首次启动时间,用于daysUntilPrompt规则。
var lastReminded: NSDate?
最近一次提示用户评分的时候,用于再次提示用户。
var usesCount: Int
app启动次数
var eventCount: Int
已经记录了可触发评分事件的次数
var usesPerWeek: Float
用户平均每周使用次数
var declinedThisVersion: Bool
用户点击了取消(拒绝)评分按钮,SwiftyiRate不使用该属性,如果你自定义逻辑,可能会需要。
var declinedAnyVersion: Bool
是否拒绝任何版本的评分,如果你设置为true,SwiftyiRate将永远不会主动提示用户评分。默认false
var ratedThisVersion: Bool
标记用户是否已经评论了该版本
var ratedAnyVersion: Bool
标记用户是否评分了任何版本
weak var delegate: SwiftyiRateDelegate?
代理协议,如果你使用SwiftyiRate帮你管理评分,你无需设置。如果你希望自定义,可以实现该代理协议。后面文档会介绍。
Methods
除了上面的一些属性,SwiftyiRate还有下面一些方法
func logEvent(deferPrompt: Bool)
记录可评分事件次数,你可以在app中调用该方法,用于记录可评分事件次数,deferPrompt为true在满足条件情况下,下次启动app时弹出评分。deferPrompt为false则满足条件就立刻弹出提示。
func shouldPromptForRating() -> Bool
是否满足评分条件,如果执行了该方法则将不会执行iRateShouldPromptForRating
delegate
func promptForRating()
该方法将立即显示评级提示框没有检查,如果App Store可访问并且没有调用SwiftyiRateShouldPromptForRating,如果你想修改调用该方法的时机,你可以修改其他相关属性或者直接修改promptIfNetworkAvailable
方法
func promptIfNetworkAvailable()
该方法用于检测app在app store是否有效,SwiftyiRateShouldPromptForRating协议方法会先被调用,所以你可以拦截该检测。如果app未上架,你需要手工设置appStoreID
否则该检测会失败。
func promptIfAllCriteriaMet()
如果所有条件都满足,则会弹出评分。SwiftyiRateShouldPromptForRating会先执行,你也可以拦截。
func openRatingsPageInAppStore()
用户正在打开评分网址,会先执行iRateShouldOpenAppStore
函数,如果你实现了该协议且返回false,则不会打开网址,此时你需要自己打开网址。如果打开成功会执行iRateDidOpenAppStore
,打开失败会执行 iRateCouldNotConnectToAppStore
Delegate methods
的SwiftyiRateDelegate协议提供了下面的方法,可用于拦截SwiftyiRate事件和重写默认行为。所有的方法都是可选的。
optional func iRateCouldNotConnectToAppStore(error: NSError)
SwiftyiRate无法连接到app store,导致原因可能是无网络、app id不正确。
optional func iRateDidDetectAppUpdate()
SwiftyiRate检测到对比上一次启动时间,本次启动的app已经被更新。
optional func iRateShouldPromptForRating() -> Bool
已经满足条件,是否提示用户评分,返回ture则显示提示框。你可以通过该方法,拦截默认提示框,实现自定义提示逻辑。
optional func iRateDidPromptForRating()
已经显示了评分提示框,你可以在此方法中记录评分数据,用于数据统计分析用户评分比例。
optional func iRateUserDidAttemptToRateApp()
用户点击了前往评分按钮。该方法仅在SwiftyiRate默认行为下被调用。如果你自定义了逻辑或者使用了openRatingsPageInAppStore
拦截,该协议方法不会被执行。
optional func iRateUserDidDeclineToRateApp()
用户点击了取消(拒绝)评分按钮,该方法仅在SwiftyiRate默认行为下被调用。你可以在此方法中记录评分数据,用于数据统计分析用户评分比例。
optional func iRateUserDidRequestReminderToRateApp()
用户点击了稍后评分按钮,该方法仅在SwiftyiRate默认行为下被调用。你可以在此方法中记录评分数据,用于数据统计分析用户评分比例。
optional func iRateShouldOpenAppStore() -> Bool
SwiftyiRate将要尝试打开app store,你可以返回false用户拦截该行为。从而实现自定义逻辑。
optional func SwiftyiRateDidOpenAppStore()
SwiftyiRate已经打开了App Store评分网址
Localisation
SwiftyiRate默认使用SwiftyiRate.bundle来实现字符串本地化为多种语言。
下面是SwiftyiRate 字符串 key:
private static let SwiftyiRateMessageTitleKey = "iRateMessageTitle"
private static let SwiftyiRateAppMessageKey = "iRateAppMessage"
private static let SwiftyiRateGameMessageKey = "iRateGameMessage"
private static let SwiftyiRateUpdateMessageKey = "iRateUpdateMessage"
private static let SwiftyiRateCancelButtonKey = "iRateCancelButton"
private static let SwiftyiRateRemindButtonKey = "iRateRemindButton"
private static let SwiftyiRateRateButtonKey = "iRateRateButton"
如果你希望SwiftyiRate使用自己的本地化文件,你可以设置useAllAvailableLanguages
为false,然后添加上面的key到自己的本地化文件。
请不要直接修改SwiftyiRate.bundle,防止更新SwiftyiRate的时候出现数据丢失。
当然你可以直接修改SwiftyiRate所有字符串内容。
override class func initialize () {
// overriding the default SwiftyiRate strings
SwiftyiRate.sharedSwiftyiRate.messageTitle = NSLocalizedString("kMessageTitle", comment: "iRate message title")
SwiftyiRate.sharedSwiftyiRate.message = NSLocalizedString("kMessage", comment: "iRate message")
SwiftyiRate.sharedSwiftyiRate.cancelButtonLabel = NSLocalizedString("kCancelButtonLabel", comment: "Decline Button")
SwiftyiRate.sharedSwiftyiRate.remindButtonLabel = NSLocalizedString("kRemindButtonLabel", comment: "Remind Button")
SwiftyiRate.sharedSwiftyiRate.rateButtonLabel = NSLocalizedString("kRateButtonLabel", comment: "Rate Button")
}
Example Projects
所有的示例工程都设置了previewMode为true,所以会出现一启动就提示评分情况。
Advanced Example
高级示例用于测试SwiftyiRateDelegate和自定义逻辑
Release Notes
Version 1.0
- Initial release.
SwiftyiRate中文说明的更多相关文章
- win10 环境 gitbash 显示中文乱码问题处理
gitbash 是 windows 环境下非常好用的命令行终端,可以模拟一下linux下的命令如ls / mkdir 等等,如果使用过程中遇到中文显示不完整或乱码的情况,多半是因为编码问题导致的,修改 ...
- 网页提交中文到WEB容器的经历了些什么过程....
先准备一个网页 <html><meta http-equiv="Content-Type" content="text/html; charset=gb ...
- opencv在图像显示中文
在图像定位和模式识别时,经常需要把结果标注到图片上,标注内容可以是数字字母.矩形框等(opencv支持的)或者是中文汉字(借助freetype). 1.显示数字/矩形框 #include <op ...
- solr服务中集成IKAnalyzer中文分词器、集成dataimportHandler插件
昨天已经在Tomcat容器中成功的部署了solr全文检索引擎系统的服务:今天来分享一下solr服务在海量数据的网站中是如何实现数据的检索. 在solr服务中集成IKAnalyzer中文分词器的步骤: ...
- Windows server 2012 添加中文语言包(英文转为中文)(离线)
Windows server 2012 添加中文语言包(英文转为中文)(离线) 相关资料: 公司环境:亚马孙aws虚拟机 英文版Windows2012 中文SQL Server2012安装包,需要安装 ...
- java中文乱码解决之道(一)-----认识字符集
沉寂了许久(大概有三个多月了吧),LZ"按捺不住"开始写博了! java编码中的中文问题是一个老生常谈的问题了,每次遇到中文乱码LZ要么是按照以前的经验修改,要么则是baidu.c ...
- Sublime Text 3中文乱码解决方法以及安装包管理器方法
一般出现乱码是因为文本采用了GBK编码格式,Sublime Text默认不支持GBK编码. 安装包管理器 简单安装 使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令 ...
- MAC下 mysql不能插入中文和中文乱码的问题总结
MAC下 mysql不能插入中文和中文乱码的问题总结 前言 本文中所提到的问题解决方案,都是基于mac环境下的,但其他环境,比如windows应该也适用. 问题描述 本文解决下边两个问题: 往mysq ...
- 【基于WPF+OneNote+Oracle的中文图片识别系统阶段总结】之篇一:WPF常用知识以及本项目设计总结
篇一:WPF常用知识以及本项目设计总结:http://www.cnblogs.com/baiboy/p/wpf.html 篇二:基于OneNote难点突破和批量识别:http://www.cnblog ...
随机推荐
- Ajax相关——get请求和post请求的区别
一.完整的URL由以下几部分组成: scheme:通信协议,常用的有:http/ftp. host:主机,服务器(计算机)域名或IP地址 port:端口,整数,可选,省略时使用默认端口,http的默认 ...
- Ubuntu 搭建 GlusterFS 过程笔记
https://download.gluster.org/pub/gluster/ #要安装的东西 ---- ``` apt install -y build-essential gcc make c ...
- PHP Libxml 函数
PHP Libxml 简介 Libxml 函数和常量与 SimpleXML.XSLT 以及 DOM 函数一起使用. 安装 这些函数需要 Libxml 程序包. 在 xmlsoft.org 下载 PHP ...
- 实体类双向映射进行Json序列化时出现无限循环的解决问题
1.@JsonIgnoreProperties 指定的字段不会被序列化,如下则ExamPaper的directory字段不会被序列化 @OneToMany(mappedBy = "direc ...
- Java中使用CountDownLatch进行多线程同步
CountDownLatch介绍 在前面的Java学习笔记中,总结了Java中进行多线程同步的几个方法: 1.synchronized关键字进行同步. 2.Lock锁接口及其实现类ReentrantL ...
- windows pe
下载adk https://www.microsoft.com/en-us/download/details.aspx?id=30652 安装 C:\Program Files (x86)\Windo ...
- 安卓高级4 第三方库SlidingMenu的使用
源码位于github上(本人fork地址):点击进入地址 效果图: 使用方法:下载源码后 解压其中的文件夹library 到任意地方 修改library中gragle 其方法参考另一个博客(建议先修改 ...
- ThreadLocal深入剖析
JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路.使用这个工具类可以很简洁地编写出优美的多线程程序,Threa ...
- python模块:网络协议和支持
python模块:网络协议和支持 webbrowser 调用浏览器显示html文件 webbrowser.open('map.html') [webbrowser - Convenient Web-b ...
- FLAnimatedImage -ios gif图片加载框架介绍
简介 FLAnimatedImage 是 Flipboard 团队开发的在它们 App 中渲染 GIF 图片使用的库. 后来 Flipboard 将 FLAnimatedImage 开源出来供大家使用 ...