Buddy iOS SDK可以帮助您在几秒钟内开始使用。
在大多数情况下,Buddy iOS SDK会处理针对Buddy REST API的请求的所有事务
处理完毕后,您只需初始化SDK并开始调用即可!
要开始使用Buddy Platform SDK,请参考Intro To Buddy的入门系列文档。在使用SDK之前,您需要App ID和密钥。入门文档将引导您获取所有必需的项,并显示如何找到您平台上的SDK。
App ID和密钥可以在buddyplatform.com的Buddy开发者仪表板上获取。
Buddy服务的完整文档可在docs.buddy.com找到。
Buddy iOS SDK可通过Cocoapods访问。安装Buddy SDK和示例应用需要至少0.39.0版本的Cocoapods。
1. 创建一个新的Xcode项目。
2. 在终端窗口中运行
cd <project-dir>
3. 创建Podfile
touch Podfile
4. 使用您最喜欢的编辑器打开该文件,并添加
platform :ios, '6.0'
target '<project name>' do
pod 'BuddySDK'
end
<project name> 应该是您的Xcode项目名称。
5. 如果您创建了一个基于Swift的项目,请添加
use_frameworks!
6. 保存Podfile。
7. 在您的终端窗口中运行
pod install
8. 在Xcode中打开项目生成的.xcworkspace
文件(不是.xcodeproj
文件)。
1. 在终端窗口中运行
cd <project-dir>
2. 创建Podfile
touch Podfile
3. 使用您最喜欢的编辑器打开该文件,并添加
platform :ios, '6.0'
target '<project name>' do
pod 'BuddySDK'
end
<project name> 应该是您的Xcode项目名称。
4. 如果您的项目是基于Swift的,请添加
use_frameworks!
5. 将CocoaPods与现有的工作空间集成需要在Podfile中添加一行。只需指定相对路径以及根文件名like so .xcworkspace
workspace '../MyWorkspace.xcworkspace'
6. 保存Podfile。
7. 在Xcode中确保关闭工作空间。然后在终端窗口中运行
pod install
8. 在Xcode中重新打开您的 .xcworkspace
文件。
Buddy在GitHub上托管我们的SDK源。要访问它,您需要一个GitHub账户,并且您还需要安装Git。如果您想为Buddy贡献SDK的修改或新增,您需要发起代码分支以便您可以发起Pull Requests。有关详细信息,请参阅下面的“贡献回社区”部分。
1. 在终端窗口中运行
git clone https://github.com/BuddyPlatform/Buddy-iOS-SDK.git
这会将最新版本的SDK克隆到名为Buddy-iOS-SDK的目录中。
2. 导航到您克隆Buddy GitHub存储库时创建的Buddy-iOS-SDK目录。
iOS源代码位于Buddy-iOS-SDK\Src目录中。
为了在您的项目中引用本地的SDK
1. 按照上文中的“使用CocoaPods安装”步骤创建Podfile。
2. 您必须在Podfile中添加一个:path
参数,以指明从您的项目到Buddy SDK的相对路径。它可能看起来像这样
platform :ios, '6.0'
target '<project name>' do
pod 'BuddySDK', :path => '../../BuddySDK.podspec'
end
应为您的Xcode项目的名称。
3. 然后,在终端窗口中运行以下命令。如果您已经执行过,再次执行也可以
pod install
现在,您在本地Buddy SDK源中的任何修改都会在您在Xcode中构建项目时被您的项目接受。如果您向Buddy SDK添加或删除文件,您需要在终端窗口中为您的项目执行 pod update
。
请访问Buddy仪表板以获取应用程序编号和密钥,这些密钥是您的应用与Buddy通信所需的。
支持基于Objective-C和Swift的项目。
要将在您的源文件中引用Buddy SDK,您需要在包含您的AppDelegate的文件顶部放置一个import关键字
Objective-C: 打开AppDelegate.m
文件并导入BuddySDK
#import "BuddySDK/Buddy.h"
Swift: 打开AppDelegate.swift
并导入BuddySDK
import BuddySDK
在您可以调用SDK中的任何方法之前,它必须被初始化。初始化客户端的最佳位置是在AppDelegate
内部。在didFinishLaunchingWithOptions
方法中初始化您的客户端
Objective-C: [Buddy init:@"YOUR_APP_ID" appKey:@"YOUR_APP_KEY"];
Swift: Buddy.init("YOUR_APP_ID", appKey: "YOUR_APP_KEY");
将上面的“YOUR_APP_ID”和“YOUR_APP_KEY”替换为从Buddy仪表板获取的Buddy应用的ID和密钥。
在Buddy iOS SDK中处理用户的创建、登录和注销。以下是一些Objective-C的示例调用。
[Buddy createUser:self.signupUsername.text
password:self.signupPassword.text
firstName:self.signupFirstName.text
lastName:self.signupLastName.text
email:self.signupEmail.text
dateOfBirth:nil
gender:nil
tag:nil
callback:^(id newBuddyObject, NSError *error)
{
if (!error)
{
// Greet the user
}
}];
[Buddy loginUser:@"username" password:@"password" callback:^(id newBuddyObject, NSError *error)
{
if (!error)
{
// Greet the user
}
}];
[Buddy logoutUser:^(NSError *error) {
// Perform some action on logout
}];
您可以在AppDelegate上实现一个名为authorizationNeedsUserLogin
的选择器,每当需要进行用户登录的Buddy通话时,该选择器都会被调用。这样,您就不必管理用户登录状态。以下是一个示例:
-(void)authorizationNeedsUserLogin
{
// To ensure that login UI is not shown twice if the selector is called multiple times
if (self.loginPresented == TRUE)
{
return;
}
self.loginPresented = TRUE;
LoginViewController *loginVC = [[LoginViewController alloc]
initWithNibName:@"LoginViewController" bundle:nil];
[self.navController.topViewController presentViewController:loginVC animated:NO completion:nil];
}
每个SDK都提供了封装器来为Buddy发送REST调用。响应可以以两种方式处理:您可以创建自己的封装类,类似于在Models
文件夹中找到的,或者您可以使用基本的[NSDictionary class]
。
在这个例子中,我们将创建一个签到。查看创建签到文档然后
BPCoordinate *coord = BPCoordinateMake(47.1, -121.292);
NSDictionary *params = @{@"location": coord,
@"comment": @"A comment about this awesome place!"};
[Buddy POST:@"/checkins" parameters:params class:[NSDictionary class] callback:^(id checkin, NSError *error) {
if (!error) {
NSLog(@"Checkin post went as planned");
} else {
NSLog(@"%@", error);
}
}];
现在我们可以调用GET,以搜索我们刚刚创建的签到!
BPCoordinateRange *range = BPCoordinateRangeMake(47.1, -121.292, 2500);
NSDictionary *params = @{@"locationRange": range};
[Buddy GET:@"/checkins" parameters:params class:[BPPageResults class] callback:^(id results, NSError *error) {
if (!error) {
NSArray *checkins = [(BPPageResults*)results convertPageResultsToType:[BPCheckin class] ];
NSLog(@"%@", checkins); // Log or do something with the response
} else {
NSLog(@"GET checkins was unsuccessful.");
NSLog(@"%@", error);
}
}];
如果我们想通过ID搜索特定的签到,我们也可以这样做
NSString* path = [NSString stringWithFormat:@"/checkins/%@", checkinId];
[Buddy GET:path parameters:nil class:[BPCheckin class] callback:^(id checkin, NSError *error) {
if (!error) {
BPCheckin *checkin = (BPCheckin*)checkin;
// do something with the response
} else {
NSLog(@"GET checkin was unsuccessful.");
NSLog(@"%@", error);
}
}];
剩余的每个REST动词都可通过Buddy SDK使用与POST示例相同的模式访问。
Buddy支持二进制文件。iOS SDK通过我们的REST接口与文件工作,类似于其他API调用。关键类是BPFile
,这是对NSData的封装,并附加了MIME内容类型。
注意:文件响应与标准Buddy响应模板不同。有关更多信息,请参阅Buddy平台文档。
在这里,我们展示了上传图片。所有二进制文件使用相同的模式,路径和参数不同。要上传图片,请将POST发送到"/pictures"
BPFile *file = [[BPFile alloc] init];
file.contentType = @"image/jpg";
file.fileData = UIImageJPEGRepresentation(koi, .75);
NSDictionary *parameters = @{@"data": file,
@"caption": @"Koi are awesome fish."};
[Buddy POST:@"/pictures" parameters:parameters class:[NSDictionary class] callback:^(id picture, NSError *error) {
if (!error) {
NSLog(@"Image uploaded successfully");
} else {
NSLog(@"Image upload went wrong");
NSLog(@"%@", error);
}
}];
要下载文件,请发送带有BPFile作为操作类型的GET请求。此示例下载“上传文件”示例中上传的图片
// Don't forget to store the picture ID in pictureId!
[Buddy GET:[NSString stringWithFormat:@"/pictures/%@/file", pictureId] parameters:nil class:[BPFile class] callback:^(id obj, NSError *error) {
if (!error)
{
BPFile *file = (BPFile*)obj;
UIImage* image = [UIImage imageWithData:file.fileData];
// Do something with the image!
NSLog(@"Image download successful");
} else {
NSLog(@"Something went wrong");
}
}];
如果您在Buddy客户端中设置当前位置,每次进行Buddy通话时,该位置都会传递到通话中。大多数向Buddy发送数据的调用都有位置参数;如果进行不包含位置的调用,则参数将被忽略。
BPCoordinate *location = BPCoordinateMake(47.1, -121.292);
[Buddy setLastLocation: location];
如果您需要多个客户端(例如,如果需要从应用程序中同时与多个用户交互),您可以捕获从Buddy.init
创建的客户端,并单独使用这些客户端
id<BuddyClientProtocol> client1 = [Buddy init:@"Your App ID 1" appKey:@"Your App Key1"];
id<BuddyClientProtocol> client2 = [Buddy init:@"Your App ID 2" appKey:@"Your App Key2"];
[client1 loginUser:@"user1" password:@"password1" callback:<#^(id newBuddyObject, NSError *error)callback#>
{
if (!error)
{
// Greet user1
}
}];
[client2 loginUser:@"user2" password:@"password2" callback:<#^(id newBuddyObject, NSError *error)callback#>
{
if (!error)
{
// Greet user2
}
}];
您可以在AppDelegate上实现一个名为connectivityChanged
的选择器,以便在设备因任何原因丢失并恢复与Buddy服务器通信能力时得到通知。以下是一个通知用户的示例
- (void)connectivityChanged:(NSNumber *)level
{
BPConnectivityLevel connectivityLevel = [level intValue];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: @"Connectivity Alert"
message: level == BPConnectivityNone ? @"No connectivity..." : @"Connected!"
delegate: self
cancelButtonTitle: @"OK"
otherButtonTitles: nil];
[alert show];
}
Buddy Platform iOS SDK包含一些示例应用程序,以帮助您入门。您可以根据需要修改这些应用程序,或者仅使用它们来了解基础知识。示例应用程序位于示例目录中。
使用CocoaPods将这些应用程序安装到Buddy SDK中。在终端窗口中,使用cd
到示例项目根目录,然后输入:pod install
演示了简单的登录和注销。此应用程序在AppDelegate上实现了authorizationNeedsUserLogin & connectivityChanged选择器。
演示了使用Buddy实现用户注册和登录的另一种方式。此应用程序在AppDelegate上实现了authorizationNeedsUserLogin选择器。
这是一个简单的相册应用程序,用户可以添加照片并为它们添加标题和标签。此应用程序旨在在iOS模拟器中使用。
在运行应用程序之前,请确保您相册中有一些照片(在模拟器中)。如果没有,您可以使用Safari添加一些照片(搜索一些图片,然后长按并保存它们)。
这是一个使用Buddy消息和推送通知API实现的简单聊天应用程序。
我们非常希望您能帮助我们使Buddy SDK尽可能好!
要提交更改到Buddy SDK,请执行以下操作
这应该已经为您提供了如何使用Buddy iOS SDK的基本知识。如果您还有其他问题或遇到困难,请通过电子邮件发送到[email protected]。