测试已测试 | ✗ |
Lang语言 | SwiftSwift |
许可证 | MIT |
发布最新版本 | 2017年1月 |
SwiftSwift 版本 | 3.0 |
SPM支持 SPM | ✓ |
由 Oyvind Kvanes 管理。
更新:现在 Kapabel SDK 允许您在离线时存储结果。一旦您上网,这些结果将被提交。
Kapabel 非常易于集成到您的应用程序中。登录是通过我们的应用程序进行的,类似于“通过 Facebook 登录”。
您只需要在应用程序的某个位置添加一个“通过 Kapabel 登录”按钮,并添加我们的 SDK。
查看Kapabel 应用并进行测试,使用挪威测验演示应用程序。
import KapabelSDK
// Runs after logging in from Kapabel App
func application(_ application: UIApplication, open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
Kapabel.instance.saveInfo(userInfo: url.absoluteString)
return true
}
func applicationDidBecomeActive(_ application: UIApplication) {
// Update Kapabel information
let YOUR_APP_ID = 0 // You create apps in the developer dashboard
let YOUR_API_TOKEN = "some-token-here" // You get this when signing up
let YOUR_APP_GROUP_NAME = "group.your.own.group.here" // Create this in Target/Capabilities
Kapabel.instance.update(id: YOUR_APP_ID, token: YOUR_API_TOKEN, appGroup: YOUR_APP_GROUP_NAME)
}
注意:确保您的项目名称中没有空格。由于 iOS 中深链接的设置方式,Kapabel SDK 在这种情况下无法正常工作。
如果您的应用程序位于“为儿童制作”类别中,您可以使用以下内容
Kapabel.instance.parentalGate(true)
Kapabel.instance.logInWithKapabel(sender: self)
这需要从一个将打开带家长控制的 UIAlertController 的 UIViewController 发送。一旦家长控制被解决,用户就能从 Kapabel 应用程序中登录。如果尚未安装,他们将下载该应用程序。
如果您的应用程序不位于“为儿童制作”类别中,或者您想实现自己的家长控制,请使用以下内容
Kapabel.instance.logInWithKapabel(sender: self)
这直接将他们带到 Kapabel 应用或 App Store。
let MY_APP_TASK_ID = 122 // You create AppTaskIDs in the developer panel.
Kapabel.instance.startTask(MY_APP_TASK_ID)
var THE_SCORE = 0.75 // Score between 0.00 and 1.00
Kapabel.instance.endTask(THE_SCORE)
苹果应用商店审查准则中关于儿童应用安全的相关说明如下
儿童分类是人们轻松找到适合儿童应用的一个好方法。如果您想参与儿童分类,应专注于为年轻用户提供特定的良好体验。除非这些应用在家长控制家中指定的区域内提供,否则这些应用不得包含应用外链接、购买机会或对儿童的干扰。
因此,您必须在用户前往应用商店下载Kapabel应用之前在您的应用中包含一个家长控制功能。已经包含在SDK中的家长控制功能是一个类似于这样的UIAlertController:
如果您想在登录Kapabel之前在您的应用中使用此功能,可以使用以下代码:
Kapabel.instance.parentalGate(true)
Kapabel.instance.logInWithKapabel(sender: self)
当然,如果您愿意,您也可以实现自己的家长控制功能,但您的应用在儿童分类中时,登录Kapabel必须在家长控制之后进行。
Kapabel SDK在家长控制中的确认用户成功登录的toasts使用了一些字符串。您可以在Kapabel.strings文件中找到所有这些字符串。
如果您使用CocoaPods安装Kapabel,需要将您想要的本地化添加到您的项目中;您可以在本地化文件夹中找到Kapabel.strings的本地化版本。
本部分介绍了如何将KapabelSDK集成到新应用中。详细程度足以帮助经验有限的开发者。
如果您使用CocoaPods,您可以跳过第1-3部分,并在Podfile中添加以下内容:
pod 'KapabelSDK'
这将为您的应用程序设置一个自定义URL方案作为您的捆绑标识符。这是必要的,以便Kapabel应用可以将信息发送回您的应用。这是在用户登录时发生的。
您可以在这里了解有关深链和应用程序之间通信的更多信息。
在开发者面板中,您将创建您的ApiToken、AppIDs和AppTaskIDs。
Kapabel开发者面板目前正在开发中,请通过[email protected]联系我们,我们将为您手动创建这些。
首先,您需要在想使用KapabelSDK的类中导入它
import KapabelSDK
// Runs after logging in from Kapabel App
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
let YOUR_APP_ID = 1 // You create apps in the developer dashboard
let YOUR_API_TOKEN = "something-something" // You get this when signing up
Kapabel.instance.startKapabel(YOUR_APP_ID, apiToken: YOUR_API_TOKEN, userInfo: url.absoluteString)
return true
}
这个方法的功能是将用户token与您的应用进行注册。这对于将结果发送到Kapabel是必需的。
默认情况下,Kapabel使用吐司来显示当用户登录时。如果登录失败或用户出于某种原因被注销,也会显示吐司。用户将保持登录状态,直到他们前往Kapabel应用注销。
如果您希望停止显示吐司,可以这么做
Kapabel.instance.showToasts(false)
如果您想要更多地了解Kapabel在做什么,可以使用
Kapabel.instance.showLog(true)
为了让您的应用开始向Kapabel发送数据,用户需要登录。用户通过Kapabel应用进行登录。这与使用Facebook、Twitter、Google等登录类似。
当点击此按钮时,您将调用以下方法
如果您的应用程序位于“为儿童制作”类别中,您可以使用以下内容
Kapabel.instance.parentalGate(true)
Kapabel.instance.logInWithKapabel(sender: self)
这需要从一个将打开带家长控制的 UIAlertController 的 UIViewController 发送。一旦家长控制被解决,用户就能从 Kapabel 应用程序中登录。如果尚未安装,他们将下载该应用程序。
如果您的应用程序不位于“为儿童制作”类别中,或者您想实现自己的家长控制,请使用以下内容
Kapabel.instance.logInWithKapabel(sender: self)
这直接将他们带到 Kapabel 应用或 App Store。
我建议按照下面的截图测试使用Kapabel登录的功能。当您点击“使用Kapabel登录”按钮时,如果您已安装了Kapabel应用,您将被带到Kapabel应用。如果没有安装,您将被带到App Store进行下载。
在Kapabel应用中,您将能够登录或创建新账户。登录后,将弹出一个询问是否使用此账户登录到您的应用。点击“确定”,您将回到应用。现在,您已在应用中使用Kapabel登录。
用户将在您的应用中保持使用Kapabel登录的状态,直到他们主动前往Kapabel应用进行注销。如果用户在其他设备上注销Kapabel,他们也会被注销。
现在,您需要决定在哪里在您的应用中启动Kapabel任务。这取决于您的应用如何构建,可以在一个或多个地方开始。我将使用我的Decimals应用来展示如何完成。
Decimals有一个startNewRound()方法,在每个回合的开始运行,这是一个启动新任务的好地方。要启动新任务,您需要粘贴以下代码
let MY_APP_TASK_ID = 122 // You create AppTaskIDs in the developer panel.
Kapabel.instance.startTask(MY_APP_TASK_ID)
App任务ID是在您的开发者面板中创建的。对于Decimals,我有以下App任务
Decimals有6种不同的活动,因此我使用了6个不同的AppTaskID来反映这一点。应用处理3个不同的数学主题,即加法、减法和乘法。为AppTaskIDs选择正确的主题非常重要,因为它帮助教师了解学生哪些科目部分有困难。
现在我的startNewRound()方法看起来是这样的
// Starts a new round
func startNewRound() {
let MY_APP_TASK_ID = SettingsManager.sharedInstance.taskID
Kapabel.instance.startTask(MY_APP_TASK_ID)
round += 1
attemptsAtCurrentQuestion = 0
updateLabels()
setUpNewQuestion()
}
我从SettingsManager获取正确的AppTaskID,然后启动一个任务。
当你的应用用户完成你想提交结果的Kapabel活动时,你可以使用以下代码来实现
var THE_SCORE = 0.75
Kapabel.instance.endTask(THE_SCORE)
提交的分数必须是介于0.0和1.0之间的值,而如何评分活动则由你自己决定。除了你提交的分数外,Kapabel还会记录完成任务所需的时间。这将影响学生在完成任务后获得的经验值。
在我的Decimals应用中,我在checkAnswer()方法中提交结果
func checkAnswer(){
var currentTaskScore = (4.0 - Double(attemptsAtCurrentQuestion)) / 4.0
if (currentTaskScore < 0.0){
currentTaskScore = 0.0
}
Kapabel.instance.endTask(currentTaskScore)
}
在这个应用中,学生需要在5个选项中选择正确的答案。如果他们立即回答正确,将获得1.0分,如果犯了一个错误将获得0.75分,等等。
在这里,你可以看到使用Decimals应用的学生的一些结果在Kapabel仪表板上的样子。你可以在每个AppTask下看到几个任务以及它们的开始和结束时间。
在使用你的应用一段时间并完成了一些任务后,你可以进入Kapabel应用并查看结果。你应该看到所完成任务的次数增加了,并且你已经在正确的主题中获得了经验值。
现在一切都已完成,你可以将更新提交给Apple。同时请告诉我们你的应用已集成,这样我们可以将其添加到我们的应用目录中,并将学生引荐给你。
如果您希望在您的应用中使用Kapabel,请联系我们:[email protected]。您还可以订阅我们的时事通讯,了解更多关于Kapabel的信息:[http://kapabel.io](http://kapabel.io)
要运行示例项目,首先克隆repo,然后在Example目录中运行pod install
。