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 ...
随机推荐
- 用burpsuite暴力破解后台
[实验原理] Burp Suite是Web应用程序测试的最佳工具之一,其多种功能执行各种任务.请求的拦截和修改,扫描web应用程序漏洞,以暴力破解登录表单,执行会话令牌等多种的随机性检查. Burp ...
- sql 复习练习
一.基础1.说明:创建数据库CREATE DATABASE database-name2.说明:删除数据库drop database dbname3.说明:备份sql server--- ...
- LinkedList源码和并发问题分析
1.LinkedList源码分析 LinkedList的是基于链表实现的java集合类,通过index插入到指定位置的时候使用LinkedList效率要比ArrayList高,以下源码分析是基于JDK ...
- 网页底部广告悬浮弹窗(css)
有的单页面需要添加广告等悬浮div. 部分代码: <div class="flex"> 内容.... </div> 主要css代码: .flex{posit ...
- cassandra 3.x官方文档(3)---gossip通信协议及故障检测与恢复
写在前面 cassandra3.x官方文档的非官方翻译.翻译内容水平全依赖本人英文水平和对cassandra的理解.所以强烈建议阅读英文版cassandra 3.x 官方文档.此文档一半是翻译,一半是 ...
- UE4使用UMG接口操作界面
原文链接:http://gad.qq.com/article/detail/7181131 本文首发腾讯GAD开发者平台,未经允许,不得转载 UE4的蓝图之强大让人欲罢不能,但是实际在项目的开发中,C ...
- docker iotop :OSError: Netlink error: No such file or directory
在容器内使用iotop ,错误信息: raceback (most recent call last): File "/usr/sbin/iotop", line 16, in & ...
- 微信小程序实例-摇一摇抽奖
概述 前面我们讲了如何开始微信小程序搭建和一些组件的介绍.微信小组件和微信小程序入门 微信小程序目录 为了更好的理解小程序和小程序开发,我们首先来看一下项目的目录. 首先看下根目录下的app.json ...
- 值集&快速编码(Lookup_code)
--值集 SELECT ffv.flex_value, ffv.description FROM fnd_flex_values_vl ffv, fnd_flex_value_sets ffs ...
- Java进阶(四十五)java 字节流与字符流的区别
java 字节流与字符流的区别(转载) 字节流与和字符流的使用非常相似,两者除了操作代码上的不同之外,是否还有其他的不同呢? 实际上字节流在操作时本身不会用到缓冲区(内存),是文件本身直接操作 ...