参见:https://github.com/theappcapital/SiriusRating-Android,适用于 Android。
一种非侵入式且友好的方式,提醒用户评价和评分 iOS 应用程序。
配置一个 SiriusRating 共享实例,通常在您的 AppDelegate 或应用程序的初始化器中。
在 AppDelegate 中的 application(_:didFinishLaunchingWithOptions:)
函数中
SiriusRating.setup()
例如
//...
func application(_: UIApplication, didFinishLaunchingWithOptions _: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
//...
SiriusRating.setup()
return true
}
默认情况下,当满足以下条件时,将提示用户评价应用程序
已安装至少 30 天
,已打开应用程序至少 15 次
,并且已完成 20 个重要事件
。如果用户选择“稍后提醒我”,他们将在 7 天后再次收到提示。如果用户拒绝提示,他们将在 30 天后再次收到提示,退避因子为 2。这意味着如果用户第二次拒绝,他们将在 60 天后再次收到提示,第三次在 120 天后,依此类推。
要使用 CocoaPods 将 SiriusRating 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
pod 'SiriusRating'
要使用 Carthage 将 SiriusRating 集成到您的 Xcode 项目中,请在您的 Cartfile
中指定它
github "theappcapital/SiriusRating-iOS"
dependencies: [
.package(url: "https://github.com/theappcapital/SiriusRating-iOS.git", .upToNextMajor(from: "1.0.8"))
]
重要事件定义了您的应用程序中发生的重要操作。在时间跟踪应用程序中,可能是用户记录了一个时间条目。在游戏中,可能是完成了一个关卡。
SiriusRating.shared.userDidSignificantEvent()
SiriusRating 将在每次重要事件后验证条件,并在所有条件都满足时提示用户。
要查看请求提示在您的应用程序中的外观,只需使用以下代码。
// For test purposes only.
SiriusRating.shared.showRequestPrompt()
StyleOneRequestPromptPresenter(浅色,默认) | StyleOneRequestPromptPresenter(深色,默认) |
---|---|
![]() |
![]() |
StyleTwoRequestPromptPresenter(浅色) | StyleTwoRequestPromptPresenter(深色) |
---|---|
![]() |
![]() |
评分条件用于验证是否可以提示用户为应用程序评分。验证过程在用户执行重要事件 (userDidSignificantEvent()
) 后或在应用程序打开时配置后发生。如果所有评分条件都满足(返回 true
),则将提示用户为应用程序评分。
评分条件 | 描述 |
---|---|
EnoughAppSessionsRatingCondition |
验证应用程序是否已启动或进入前台足够的次数。 |
EnoughDaysUsedRatingCondition |
验证应用程序已使用了足够的时间(以天为单位)。 |
EnoughSignificantEventsRatingCondition |
验证用户是否已完成足够的重要事件。 |
NotDeclinedToRateAnyVersionRatingCondition |
验证用户是否没有拒绝评价应用程序的任何版本。如果拒绝过,它会检查自最初拒绝以来是否已过去足够的时间才再次提示。 |
NotPostponedDueToReminderRatingCondition |
验证用户是否选择稍后提醒。如果是,则检查是否已过去要求的天数以再次提示。 |
NotRatedCurrentVersionRatingCondition |
验证用户是否已评价过当前版本的应用程序。如果用户已经评价过此版本,则不会再次提示。 |
NotRatedAnyVersionRatingCondition |
验证用户是否没有评价过应用程序的任何版本。如果用户之前评价过该应用程序,它会检查自上次评分以来是否已过去足够的时间才再次提示。 |
SiriusRating.setup(
requestPromptPresenter: StyleTwoRequestPromptPresenter(),
debugEnabled: true,
ratingConditions: [
EnoughDaysUsedRatingCondition(totalDaysRequired = 0),
EnoughAppSessionsRatingCondition(totalAppSessionsRequired = 0),
EnoughSignificantEventsRatingCondition(significantEventsRequired = 5),
// Essential rating conditions below: Ensure these are included to prevent the prompt from appearing continuously.
NotPostponedDueToReminderRatingCondition(totalDaysBeforeReminding: 14),
NotDeclinedToRateAnyVersionRatingCondition(daysAfterDecliningToPromptUserAgain: 30, backOffFactor: 2.0, maxRecurringPromptsAfterDeclining: 2),
NotRatedCurrentVersionRatingCondition(),
NotRatedAnyVersionRatingCondition(daysAfterRatingToPromptUserAgain: 240, maxRecurringPromptsAfterRating: UInt.max)
],
canPromptUserToRateOnLaunch: true,
didOptInForReminderHandler: {
//...
},
didDeclineToRateHandler: {
//...
},
didRateHandler: {
//...
}
)
除了当前的评分条件之外,您还可以编写自己的评分条件,以进一步鼓励正面评价。
class GoodWeatherRatingCondition: RatingCondition {
private let weatherRepository: WeatherRepository
init(weatherRepository: WeatherRepository) {
self.weatherRepository = weatherRepository
}
func isSatisfied(dataStore: DataStore) -> Bool {
// Only show the rating prompt when it's sunny outside.
return self.weatherRepository.getWeather().isSunny
}
}
要使用新的评分条件,只需将其添加到列表中。
SiriusRating.setup(
ratingConditions: [
//...,
GoodWeatherRatingCondition(weatherRepository: WeatherDataRepository())
]
)
您可以将 presenter 更改为您希望的样式。
SiriusRating.setup(
requestPromptPresenter: StyleTwoRequestPromptPresenter()
)
您可以通过为 presenter 提供一个包含您的自定义本地化字符串的 bundle 来更改文本。
SiriusRating.setup(
requestPromptPresenter: StyleOneRequestPromptPresenter(localizationsBundle: Bundle.main)
)
然后您可以在您的本地化字符串文件中更改文本,例如在:Localizable.strings
中。
// ...
"request_prompt_title" = "Rate %@";
"request_prompt_duration" = "(duration: less than 10 seconds)";
"request_prompt_description" = "If you enjoy using %@, would you mind taking a moment to rate it? Thanks for your support!";
"request_prompt_rate_button_text" = "Rate %@";
"request_prompt_dont_rate_button_text" = "No, thanks";
"request_prompt_opt_in_for_reminder_button_text" = "Remind me later";
SiriusRating 将自动使用全局 tint color。
UIView.appearance().tintColor = .red
或者您可以手动设置它。
SiriusRating.setup(
requestPromptPresenter: StyleOneRequestPromptPresenter(tintColor: .red)
)
SiriusRating 将自动在本地化文本中使用应用程序的显示名称。如果您不想使用此名称,可以手动设置它。
SiriusRating.setup(
requestPromptPresenter: StyleOneRequestPromptPresenter(appName: "App Name")
)
SiriusRating 在 MIT 许可证下发布。查看 LICENSE 了解详情。