BuddySDK 3.0.6

BuddySDK 3.0.6

测试已测试
Lang语言 Obj-CObjective C
许可 Apache 2
发布最后发布2016年8月

Brad Serbus 维护。



BuddySDK 3.0.6

  • Brad Serbus

Buddy iOS SDK

概述

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找到。

安装SDK

先决条件

  • iOS 6.0或更高版本
  • Xcode 6.4或更高版本

Buddy iOS SDK可通过Cocoapods访问。安装Buddy SDK和示例应用需要至少0.39.0版本的Cocoapods。

使用Buddy SDK创建新项目

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文件)。

将Buddy SDK集成到现有项目中

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目录中。

构建GitHub源

为了在您的项目中引用本地的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

使用iOS SDK

请访问Buddy仪表板以获取应用程序编号和密钥,这些密钥是您的应用与Buddy通信所需的。

支持基于Objective-C和Swift的项目。

初始化SDK

要将在您的源文件中引用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];
}

REST接口

每个SDK都提供了封装器来为Buddy发送REST调用。响应可以以两种方式处理:您可以创建自己的封装类,类似于在Models文件夹中找到的,或者您可以使用基本的[NSDictionary class]

POST

在这个例子中,我们将创建一个签到。查看创建签到文档然后

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

现在我们可以调用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);
    }
}];

PUT/PATCH/DELETE

剩余的每个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通话时,该位置都会传递到通话中。大多数向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

BuddyStarter

演示了简单的登录和注销。此应用程序在AppDelegate上实现了authorizationNeedsUserLogin & connectivityChanged选择器。

注册登录

演示了使用Buddy实现用户注册和登录的另一种方式。此应用程序在AppDelegate上实现了authorizationNeedsUserLogin选择器。

相册

这是一个简单的相册应用程序,用户可以添加照片并为它们添加标题和标签。此应用程序旨在在iOS模拟器中使用。

在运行应用程序之前,请确保您相册中有一些照片(在模拟器中)。如果没有,您可以使用Safari添加一些照片(搜索一些图片,然后长按并保存它们)。

推送聊天

这是一个使用Buddy消息和推送通知API实现的简单聊天应用程序。

回馈贡献:拉取请求

我们非常希望您能帮助我们使Buddy SDK尽可能好!

要提交更改到Buddy SDK,请执行以下操作

  1. 为Buddy SDK创建自己的分叉。
  2. 修改您的分叉。
  3. 在创建拉取请求之前,请将您的仓库同步到父仓库的当前状态:git pull origin master。
  4. 提交您的更改,然后提交一个针对该提交的拉取请求。##还有问题或需要帮助吗?

这应该已经为您提供了如何使用Buddy iOS SDK的基本知识。如果您还有其他问题或遇到困难,请通过电子邮件发送到[email protected]