如何向我的应用程序添加“撰写评论”/“给我们评分”功能?

2024-04-18

我希望在我的应用程序中添加某种“撰写评论”或“给我们评分”功能,以便我的客户可以轻松地对我的应用程序进行评分和评论。

我能想到的最佳实践是在我的应用程序中进行某种弹出窗口或打开 UIWebView,这样用户在打开 App Store 应用程序时就不会被踢出我的应用程序,如下所示:

[[UIApplication shareApplication] openURL:[NSURL URLWithString:@"itms://itunes.com/apps/myAppName"]];

有谁知道有什么方法可以做到这一点?


StoreKit API(iOS 10.3 及更高版本)

从 iOS 10.3 开始,StoreKit API 提供了一种无需离开应用程序即可在 App Store 上请求审核的方法。当被调用时,系统可能会向用户显示请求审查的警报。用户可以直接在警报内提供星级,继续撰写评论,或关闭警报。 StoreKit 几乎可以为您处理所有事情。要提出审核请求,请在您的应用程序中适当的位置进行以下调用:

// Objective-C
[SKStoreReviewController requestReview]

// Swift
SKStoreReviewController.requestReview()

根据 Apple 的说明,您不应调用这些来响应直接用户交互(即点击“写评论”按钮),因为它可能并不总是显示警报。事实上,该警报每 365 天只能显示 3 次。

重要的提示:虽然这看起来相当简单,但您仍然需要编写某种逻辑来间隔提示。例如,仅在 X 次启动、X 天或重大事件后才显示提示。

如果您未能执行此操作,而只是将审阅提示粘贴在任意位置(aviewDidAppear例如,调用),您的用户会相当恼火,因为他们会很快且重复地看到它。然后,他们要么留下不好的评论(因为他们很恼火),要么一整年都没有被要求再次评论。

下面是警报的示例。有关更多信息,请参阅苹果的文档 https://developer.apple.com/app-store/ratings-and-reviews/.


iRate(iOS 7.0 及更高版本)

如果您的应用程序在早于 10.3 的 iOS 版本上运行or您需要对请求用户评分进行更强大的控制,iRate 是一个很好的解决方案。

对于运行 iOS 10.3 或更高版本的设备,iRate 使用上述 StoreKit API。对于运行 iOS 7.0 至 10.2 的设备,iRate 使用uialert视图 /questions/tagged/uialertview and storekit /questions/tagged/storekit询问用户评分(或稍后提醒他们)。从“取消”按钮的标题到提醒用户的时间间隔,一切都是可定制的。

默认情况下,iRate 在满足某些要求时自动打开(例如应用程序启动 X 次、用户通过 X 级),但您也可以使用各种方法和您自己的逻辑(在 iRate 方法的帮助下)来手动显示 iRate 弹出窗口。

Setup

安装时,只需将头文件、实现文件和.bundle(用于本地化)到您的项目中。

  1. 在您的 AppDelegate 中导入标头:#import "iRate.h"
  2. Add the StoreKit您的项目框架 - 更多信息Apple 文档中的 StoreKit http://developer.apple.com/library/ios/#documentation/StoreKit/Reference/StoreKit_Collection/_index.html
  3. In your application: didFinishLaunchingWithOptions:方法,设置以下内容:

    // Configure iRate
    [iRate sharedInstance].daysUntilPrompt = 5;
    [iRate sharedInstance].usesUntilPrompt = 15;
    

特性

下面的属性对于测试目的很有用。将其设置为YES在测试期间确保对话框正确显示。当设置为YES它将在启动时立即出现,忽略其他显示设置。将其设置为NO对于您的应用程序的发行版本。

 [iRate sharedInstance].previewMode = NO;

The appStoreID属性允许您设置应用程序的 ID。这是仅当您的 Mac 和 iOS 应用程序具有相同的捆绑包标识符时才需要。此处设置的 App ID 还必须与 Xcode 和 iTunes Connect 中设置的 Bundle ID 匹配:

[iRate sharedInstance].appStoreID = 555555555;

更多细节 https://github.com/nicklockwood/iRate可在 iRate GitHub 页面上找到。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何向我的应用程序添加“撰写评论”/“给我们评分”功能? 的相关文章

随机推荐

  • .Net Framework dll 不适用于 .Net Standard 项目

    我已经参考了 Net框架 ddl to Net标准2 0 它会向我显示以下错误 System Reflection ReflectionTypeLoadException Unable to load one or more of the
  • 复选框值始终为“打开”[重复]

    这个问题在这里已经有答案了 这是我的复选框 HTML
  • C# - 转换日期时间格式 yyyy-MM-dd [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在尝试将日期时间格式从 dd M
  • nock 库 - 如何匹配任何 url

    嗨 我正在尝试箭库 https github com flatiron nock blob master README md但正在努力匹配查询字符串上的随机模式 我认为类似下面的代码应该可以工作 但我无法让任何东西工作 var nock r
  • 在pandas中读取csv时自动确定标题行

    我正在尝试从共享相同列名称的不同 csv 文件收集数据 但是 某些 csv 文件的标题位于不同的行中 有没有办法根据包含 大多数 值 实际标题名称 的第一行动态确定标题行 我尝试了以下方法 def process file file pat
  • 没有单位的行高的缺点?

    在没有单位的情况下指定行高是否有任何缺点 浏览器 设备不一致 Example body line height 1 5 在大多数情况下 使用无单位行高实际上更好 请参阅 http meyerweb com eric thoughts 200
  • JSHint 和 eclipse 插件

    所以我刚刚在 Eclipse Kepler 中安装了 JSHint 我加载了 jshintrc 文件 如何在我的 javascript 文件上运行 jshint 我没有看到菜单项 也没有看到指定文件名等的地方 有人可以帮忙吗 添加后 jsh
  • 任意预设精度小数(几乎像 BigDecimal)

    我正在寻找一个 java 类 它将保存具有任意预设精度的十进制值 班上BigDecimal看起来是一个很好的起点 但我希望能够将小数的大小限制为最终用户决定的大小 从字面上讲 最终用户将指定一个以 10 为基数的范围 我将分配足够的字节来表
  • 如何使用 open() 函数清除 .txt 文件?

    我有一个简单的程序 可以打开文件并替换文本 但是 我希望程序清除文件 然后保存需要保存的内容 我怎么做 或者有更简单的方法吗 如果您使用模式打开文件w如果文件已经存在 它将覆盖该文件 with open your file w as f f
  • 加载内核模块时出现未知符号

    我需要帮助理解为什么在插入模块时出现错误 我努力了this http www linuxforums org forum kernel 56497 unkown symbol module error while insmodding bu
  • spring jar bootRun 导致 GraphQL Schema 错误

    当我使用 gradle 构建 Spring Boot 应用程序时bootRun or build然后运行输出 jar 我从控制台日志中得到以下大量错误列表 2018 03 18 00 49 38 754 ERROR 228 main o s
  • Qt 自定义外观和感觉?

    我可以强制我的 Qt 应用程序使用不同的外观和感觉 就像在 KDE 中一样吗 您始终可以使用 QApplication setStyle 更改小部件的样式 Qt4 中有一些预定义的选项可用 在 main cpp 中做这样的事情 includ
  • 如何使用 ggplot2 面颜色和形状?

    也许 我错过了 ggplot 语法中的一些内容 可以毫无错误地绘制以下 3 个方面 不幸的是 面图混合了颜色和形状 右侧一栏应仅显示蓝色标记 而中间一栏应显示绿色标记 data1 num delay claim supply project
  • 错误:输入文件并非全部位于同一目录中,请提供显式 wd

    在尝试构建一个大约两周前工作的 PDF 后 没有大惊小怪 在一台全新安装了 R R studio 的新机器上 bookdown等等 我有这个错误 Error Input files not all in same directory ple
  • Laravel 迁移更改列的默认值

    我有一个已分配默认值的表 例如 我们可以看看以下内容 Schema create users function Blueprint table table gt increments id gt unsigned table gt inte
  • 子元素悬停时的 CSS 过渡

    当子元素的父元素悬停在其上方时 我试图暂停子元素的显示 Html span div This Is The Child div Some Text in the span span Css span position relative sp
  • 如何在 php 脚本仍在运行时显示结果

    所以我尝试过在脚本仍在执行时显示结果 https stackoverflow com questions 5415665 show results while script is still executing 但由于某种原因它不起作用 所
  • Jshell错误:java.lang.NullPointerException:charsetName

    我正在尝试使用 JDK11 提供的 JShell 来运行一些简单的命令 但是当我输入 jshell gt System out println Hello World 它给了我错误 Exception in thread main java
  • 抽象类中可以有静态数据成员吗?

    我设计了一系列相关的类 为了能够管理它们 我让它们从一个抽象类派生 这些类都需要访问一系列共享资源 我发现自己在每个类中创建了一个指针向量 它们全部相同 它们必然必须相同 似乎在基类中创建一个静态成员将使所有派生类都可以访问该向量 这意味着
  • 如何向我的应用程序添加“撰写评论”/“给我们评分”功能?

    我希望在我的应用程序中添加某种 撰写评论 或 给我们评分 功能 以便我的客户可以轻松地对我的应用程序进行评分和评论 我能想到的最佳实践是在我的应用程序中进行某种弹出窗口或打开 UIWebView 这样用户在打开 App Store 应用程序