Tamber iOS SDK
为开发者提供的推荐引擎,如同 π 一样简单。几秒钟内轻松构建快速、精确的托管推荐引擎。
Tamber iOS SDK 可以轻易地在您的 iOS 应用中追踪事件(用户-商品交互)并为您的用户获取推荐。
获取免费 API 密钥 开始使用。
要求
我们的SDK兼容iOS 8.0及以上。构建源文件需要Xcode 8.0+。
文档
此ReadMe涵盖了使用Tamber iOS SDK的基本知识。请查看SDK文档以全面了解类和方法,以及API参考以获取Tamber文档的完整信息。
安装
使用CocoaPods安装Tamber。如果您项目中还没有Podfile,请在项目目录下执行$ cd
并运行$ pod init
。
将以下行添加到您的Podfile中
pod 'Tamber'
然后,运行以下命令
$ pod install
使用方法
如果您是初学者,查看快速入门指南以获取设置说明。
要开始跟踪事件,设置可发布的项目密钥。
#import "AppDelegate.h"
@import Tamber;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[Tamber setPublishableProjectKey:@"your_project_key"];
// do any other necessary launch configuration
return YES;
}
@end
设置用户
将用户设置在您从后端加载用户的唯一ID的地方,或者您从那里加载用户ID的地方。
[Tamber setUser:@"user_id"];
跟踪事件
当用户与您的应用中的项目交互时,将事件流传输到Tamber项目。
TMBItem *item = [TMBItem itemWithId:@"item_id"
properties:@{
@"type":@"book",
@"title":@"The Moon is a Harsh Mistress",
@"img_url":@"https://img.domain.com/book/The_Moon_is_a_Harsh Mistress.jpg",
@"stock":[NSNumber numberWithInteger:34]
}
tags:@[@"sci-fi", @"bestseller"]
];
TMBEventParams *params = [TMBEventParams eventWithItem:item behavior:@"like" context:@{@"page": @"homepage", @"section": @"featured"}];
[[Tamber client] trackEvent:params responseCompletion:^(TMBEventResponse *object, NSHTTPURLResponse *response, NSError *error) {
if(error){
// Handle error
} else {
object.events[0] // Event tracked
object.recs // Returns updated recommendations if params.getRecs is set - [params setGetRecs:<TMBDiscoverParams>]
}
}];
您也可以设置项目仅为项目的唯一ID,但这将限制您引擎的功能。
TMBEventParams *params = [TMBEventParams eventWithItem:@"item_id" behavior:@"like"];
获取推荐
在设置了一些事件并创建了您的引擎后,您可以开始将用户推荐引入您的应用。
要为显示在主页或任何推荐部分上的用户获取推荐
TMBDiscoverParams *params = [TMBDiscoverParams discoverRecommended:[NSNumber numberWithInt:8]];
[[Tamber client] discoverNext:params responseCompletion:^(TMBDiscoverResponse *object, NSHTTPURLResponse *response, NSError *error) {
if(error){
// Handle error
} else {
for(TMBDiscovery *discovery in object.discoveries){
discovery.item // Recommended item id
discovery.score // Recommendation score (relative to other results, not a predicted rating)
}
}
}];
为获取项目页面上的“下一个”部分的相似项目
TMBDiscoverParams *params = [TMBDiscoverParams discoverNext:@"item_id" number:[NSNumber numberWithInt:10]];
[[Tamber client] discoverNext:params responseCompletion:^(TMBDiscoverResponse *object, NSHTTPURLResponse *response, NSError *error) {
if(error){
// Handle error
} else {
for(TMBDiscovery *discovery in object.discoveries){
discovery.item // Recommended item id
discovery.score // Recommendation score (relative to other results, not a predicted rating)
}
}
}];
如果您正在设置商品属性,您可以将这些属性包含在推荐响应中以便简化数据处理。例如,您可能有标题
、图片
和价格
属性,您可以使用这些属性将商品展示给用户,而无需对每个推荐发出额外请求。
TMBDiscoverParams *params = [TMBDiscoverParams alloc] discoverNext:[NSNumber numberWithInt:50] getProperties:true];
[[Tamber client] discoverNext:params responseCompletion:^(TMBDiscoverResponse *object, NSHTTPURLResponse *response, NSError *error) {
if(error){
// Handle error
} else {
for(TMBDiscovery *discovery in object.discoveries){
discovery.item // Recommended item id
discovery.score // Recommendation score (relative to other results, not a predicted rating)
discovery.properties // Dictionary of item properties
}
}
}];
匿名 / 未登录用户
如果您的应用允许用户在创建账户之前与内容进行交互,或者他们处于注销状态,但您有一些唯一标识符(如设备ID),您可以为此ID设置用户并将其作为正常事件进行跟踪。然后,当用户创建账户或登录时,您可以合并
匿名用户和登录用户。
// At app launch / wherever appropriate in your code
[Tamber setUser:@"anonymous-device-id"];
// On signup/login:
NSString *toUser = @"user-id"; // The id of the user to which you want to merge.
[[Tamber client] mergeToUser:toUser responseCompletion:^(TMBUser *object, NSHTTPURLResponse *response, NSError *error) {
if(error){
// Handle error. Note that mergeToUser internally sets the default user to the `toUser`.
} else {
object.events // Array of merged user events (`TMBEvent` objects)
object.metadata // Dictionary of the merged user metadata. Note that field-value conflicts default to the `toUser`.
}
}];
测试推荐
我们建议在测试期间创建测试用户。为此,只需调用makeTestUser
方法。
#define DEV_MODE true
[Tamber setUser:@"testing-user-id"];
if(DEV_MODE){
[Tamber makeTestUser];
}