本项目演示了如何调用凡泰极客Swan SDK快速构建客户端和员工端App。开发者通过这个示范项目了解如何能通过简单的代码把社交能力通过FinChat SDK嵌入到自己的现有App中。

xuguoyong 935bf1d721 更新 'README.md' 3 years ago
FINSwanDemo 8958b2acc7 修改readme 3 years ago
FINSwanDemo.xcodeproj 6c22f4ced0 update podfile 3 years ago
FINSwanDemo.xcworkspace 6c22f4ced0 update podfile 3 years ago
Pods 8958b2acc7 修改readme 3 years ago
Podfile 6dca069608 更新SDK的版本依赖 3 years ago
Podfile.lock 6c22f4ced0 update podfile 3 years ago
README.md 935bf1d721 更新 'README.md' 3 years ago

README.md

Swan SDK iOS demo app

本项目演示了如何调用凡泰极客Swan SDK快速构建客户端和员工端App。开发者通过这个示范项目了解如何能通过简单的代码把社交能力通过FinChat SDK嵌入到自己的现有App中。本示范项目的编译打包,利用了凡泰极客开发者社区提供的Cocopod工件仓库,把所需要的SDK系列组件在构建时通过依赖关系管理动态下载。

注意:目前的Swan SDK默认是不包含模拟器的架构,所以运行Demo时,请使用真机进行调试。切记!切记!切记!

一、SDK获取方式

###1.注册账号 登录凡泰极客官网,点击右上角登录,选注册,填入注册信息。 image.png

###2.获取SDK 进入凡泰极客开源社区,登录步骤1注册的账号,就能看到所有的开源的SDK以及SDK的版本号。 image.png

####注: 为了更好的服务开发者,我们会给每个开发者指定一个仓库,用于后续的SDK交付工作,该类型的仓库是私有仓库,对于不是该指定团队的开发者,是没有权限查看的,要想获取私有仓库的开发者权限,请联系我们。 ###3.SDK的版本下载说明 我们的SDK在持续的更新中,每月甚至是每两周都会更新一个新版本的SDK,为了更好的维护SDK的版本,我们所有的SDK都是通过cocopods指定版本号进行交付,开发者可以通过cocopods下载SDK。cocopods下载的Podfile文件示例如下

platform :ios, "9.0"
source 'https://git.finogeeks.com/cocoapods/finogeeks'
source 'https://git.finogeeks.com/cocoapods/FinPods'
source 'https://github.com/CocoaPods/Specs.git'

inhibit_all_warnings!

target "FINSwanCocopods" do 
    pod 'FinChat-Mixins'
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
            config.build_settings['ENABLE_STRICT_OBJC_MSGSEND'] = 'NO'
            config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO'
    end
  end
end

####注: ######3.1. 如果是开发者的指定私有仓库,请将 source 'https://git.finogeeks.com/cocoapods/finogeeks' 源修改为 source 'https://git.finogeeks.com/cocoapods/[私有仓库名称]()'. ######3.2. 如果是指定的版本号,请加上版本号,例如: pod 'FinChat-Mixins','3.9.602'

###4.申请SDK的AppKey 每个项目的AppKey是唯一的,与项目的唯一标示绑定,具体的获取方式请咨询对接的商务或者联系我们

###5.SDK的framework说明

FinChat.framework    :       SDK核心组件
MatrixSDK.framework  :       SDK核心组件
fincore.framework    :       SDK核心组件
FinChatSDK.framework :       核心SDK,提供定制化接口以及SDK的初始化类
Realm.framework      :       数据存储服务
FinApplet.framework  :       小程序组件
FINWebRTC.framework  :       音视频会议核心组件
JitsiMeet.framework  :       音视频核心框架

###6.SDK集成 ######6.1 创建一个新的工程,我们将其命名为FINSwanDemo。创建完成后如图所示:

image.png ######6.2 创建Podfile文件,文件的存放位置在项目的根目录,与 FINSwanDemo.xcodeproj 同一级。 Podfile 文件内容如下

platform :ios, "9.0"
source 'https://git.finogeeks.com/cocoapods/finogeeks'
source 'https://git.finogeeks.com/cocoapods/FinPods'
source 'https://github.com/CocoaPods/Specs.git'

inhibit_all_warnings!

target "FINSwanCocopods" do 
    pod 'FinChat-Mixins'
end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    target.build_configurations.each do |config|
            config.build_settings['ENABLE_STRICT_OBJC_MSGSEND'] = 'NO'
            config.build_settings['APPLICATION_EXTENSION_API_ONLY'] = 'NO'
    end
  end
end

######6.3 打开终端,cd到FINSwanDemo文件目录,执行 pod update 。(注:如果没有安装cocopods,请先安装:参考链接).

######6.4 pod update 成功之后,文件的目录结构如下,我们打开 FINSwanDemo.xcworkspace进行开发。 image.png #到目前为止,SDK的集成工作已经完成了,下面开始讲解SDK的使用。

###7 SDK的初始化 ######7.1 导入SDK头文件

#import <FinChatSDK/FinChatSDK.h>

######7.2 构造SDK配置对象

    // 1.设置信息app的运行环境和信息
    NSDictionary *appConfig = @{
           @"apiURL":@"https://mini.finogeeks.club",//app的 服务器地址
           @"finochatApiPrefix":@"/api/v1",        //app 服务器的版本号
           @"appType":@"STAFF",                    //app 的类型 目前有 STAFF(员工端) 和 RETAIL(客户端)两种
           @"appId":[NSBundle mainBundle].bundleIdentifier,//项目的唯一标示
           @"appKey":@"请填写您申请的appKey" ,               //App 授权码
           @"pushGatewayURL":@"http://push-service.platform:5000/_matrix/push/v1/notify", //app APNS推送服务地址
           @"pusherAppIdProd":[NSBundle mainBundle].bundleIdentifier, //app  APNS生产环境的推送appId 即BundleId
           @"pusherAppIdDev":[NSBundle mainBundle].bundleIdentifier, //app APNS开发环境的推送appId 即BundleId
           @"settings":@{                         //功能的配置信息
                         @"urlSchemaPrefix":@"urlSchema", //app的 urlSchema(用于app的分享和)
                         @"encryptedPassword":@(NO),     //app 是否开启加密登录
                                            },
                                };

  // 2.构造配置信息对象
    FinoChatConfig *config = [[FinoChatConfig alloc] initWithDict:nil];
    FinoChatOptions *options = [FinoChatOptions optionsWithConfig:config];
    options.isAPNSRegistered = YES;

######7.3 初始化SDK

    NSError *error = nil;
    [[FinoChatClient sharedInstance] fino_initSDK:options error:&error];
     if (!error) {
        NSLog(@"FinChatSDK 初始化成功");
    }

#到目前为止,SDK的集成工作已经完成了,下面开始讲解SDK的API接口的的使用。 ###8. SDK UI组件的调用 ######SDK提供了一系列的接口供开发者调用,所有开放的API接口以及注释可以查看 FinoChatClient 这个类,详情请点击,下面我们举个例子来说明接口的调用,其他的以此类推

######8.1 账户登陆API (目前提供账号密码、手机号验证码以及token三种登录方式)

    //1 账户密码登录
    [[FinoChatClient sharedInstance].finoAccountManager login:@"staff1" password:@"123456" success:^(NSDictionary *result) {
        
    } failure:^(NSError *error) {
        
    }];
    
    //2 token登录
    [[FinoChatClient sharedInstance].finoAccountManager loginWithToken:@"token" success:^(NSDictionary *result) {
        
    } failure:^(NSError *error) {
        
    }];
    
    //3 账号密码登录
    [[FinoChatClient sharedInstance].finoAccountManager loginWithMobile:@"138xxxxxxxx" verification:@"1234" success:^(NSDictionary *result) {
        
    } failure:^(NSError *error) {
        
    }];

//退出当前账号
[[FinoChatClient sharedInstance].finoAccountManager logout];

######8.1 获取会话列表(消息列表)

  UIViewController *conversation =  [[FinoChatClient sharedInstance].finoChatUIManager conversationViewControllerWithDelegate:nil];

######8.2 根据聊天房间id 打开聊天房间

  NSString *roomId = @"xxxx";//聊天房间的id
  UIViewController *chatRoomController = [[FinoChatClient sharedInstance].finoChatUIManager chatViewControllerWithRoomId:roomId];

######8.3 获取金易联SDK工作界面

   UIViewController *workController =  [[FinoChatClient sharedInstance].finoSwanUIManager swanOrderListViewController];

######8.4 获取金易联SDK个人信息界面

UIViewController *mimeController =  [[FinoChatClient sharedInstance].finoSwanUIManager swanMineViewController];

######8.4 根据员工id 获取员工信息

    NSString *staffId = @"xxx";//员工id
    UIViewController *mimeController =  [[FinoChatClient sharedInstance].finoSwanUIManager swanStaffInfoWithStaffId:staffId completeBlock:^(NSError *error, NSDictionary *responseObj) {
        
    }];

#注:更多的接口和API请访问 FinoChatSDK 文档.

###9.其他 #####为了更好的服务开发者,SDK还提供了一系列的开关配置供开发者定制SDK,所有的开关配置以及说明在FINSettingsInfo类中。开关的配置需要在SDK初始化的时候配置完成,即在步骤7.2中设置,例如:需要实现以下三个开关 1.开启自动添加好友功能。(现象:个人详情界面添加好友按钮隐藏) 2.显示截屏反馈功能。(现象:截屏的时候回显示报错弹窗) 3.开启主题设置。(现象:个人中心 - 设置中-多一个主题设置的选项) 4.关闭音视频和音视频会议功能。(现象:聊天房间内 键盘的+会隐藏语音聊天和视频聊天入口)。 5.关闭创建群聊功能。(现象:会话列表会右上角会隐藏发起群聊入口) 5.关闭修改用户名。(现象:用户的姓名不能被修改) 那么配置文件可以修改如下

 NSDictionary *appConfig = @{
                                @"apiURL":@"https://mini.finogeeks.club",//app的 服务器地址
                                @"finochatApiPrefix":@"/api/v1",//app 服务器的版本号
                                @"appType":@"STAFF", //app 的类型 目前有 STAFF(员工端) 和 RETAIL(客户端)两种
                                @"appId":[NSBundle mainBundle].bundleIdentifier,//项目的唯一标示
                                @"appKey":@"请填写您申请的appKey",//App 授权码
                                @"pushGatewayURL":@"http://push-service.platform:5000/_matrix/push/v1/notify", //app APNS推送服务地址
                                @"pusherAppIdProd":[NSBundle mainBundle].bundleIdentifier, //app  APNS生产环境的推送appId 即BundleId
                                @"pusherAppIdDev":[NSBundle mainBundle].bundleIdentifier, //app APNS开发环境的推送appId 即BundleId
                                @"settings":@{ //功能的配置信息
                                        @"urlSchemaPrefix":@"urlSchema", //app的 urlSchema(用于app的分享和)
                                        @"encryptedPassword":@(NO),     //app 是否开启加密登录
                                        @"conversation":@{ //会话列表的配置
                                                @"isShowGroupChat":@(YES),//是否显示创建群聊
                                                },
                                        @"chat":@{
                                                @"isVideoChat":@(NO),//是否显示音视频聊天
                                                @"isVideoConference":@(NO),//是否显示音视频会议
                                                },
                                        @"swan":@{ //金易联的配置
                                                @"showThemeSetting":@(YES),//是否显示主题设置
                                                },
                                        @"addressBook":@{ //通讯录的配置
                                                @"autoAddFriend":@(YES),//是否开启自动添加好友
                                                },
                                        @"mine":@{ //个人信息的配置
                                                @"disableEditName":@(YES),//是否不允许允许修改用户名
                                                },
                                        
                                            },
                                };

###更多的配置信息请查看 FINSwanSettingsInfo : 金易联 开关设置信息 FINChatMessageSettingsInfo : 聊天房间内 开关设置信息 FINConvosationSettingsInfo : 会话列表 开关设置信息 FINAddressBookSettingsInfo : 通讯录 开关设置信息 FINMineSettingsInfo: 我的 开关设置信息

#更多的信息请访问我们官网开发者手册.