zoukankan      html  css  js  c++  java
  • yun2win-iOS端IM SDK使用方法

    yun2win-iOS IM SDK下载地址:https://github.com/yun2win/yun2win-sdk-iOS

    yun2win官网:www.yun2win.com

    开发准备

    从以下网址下载SDK:

    https://github.com/yun2win/yun2win-sdk-server

    iOS目录结构如下:

    • Common:通用模块
      • Util:常用工具
      • Config:全局配置
      • Category:类别扩展
    • Classes:demo结构
      • ConversationList:用户会话列表
      • Conversation:用户会话界面
      • Contact:联系人
      • Setting:设置
      • Setting:登陆注册
    • Model:demo业务逻辑及实体
    • Yun2Win:SDK模块

    注册

    调用以下代码进行用户注册:

    复制
    
    [[Y2WUsers getInstance].remote registerWithAccount:@"account"
                                              password:@"password"
                                                  name:@"name"
                                               success:^{
    
                                                // 注册成功
    
                                             } failure:^(NSError *error) {
    
                                                // 注册失败
                                             }];

    登录

    调用以下代码进行登录:

    复制
    
    [[Y2WUsers getInstance].remote loginWithAccount:@"account"
                                           password:@"password"
                                            success:^(Y2WCurrentUser *currentUser) {
    
                                               // 登陆成功
                                               // currentUser为本次登陆用户的对象
    
                                          } failure:^(NSError *error) {
    
                                               // 登陆失败
                                          }];

    提醒

    登录成功后可使用[Y2WUsers getInstance].getCurrentUser全局调用。

    当前用户

    登陆后可调用以下代码获取当前用户

    复制
    
    Y2WCurrentUser *currentUser = [Y2WUsers getInstance].getCurrentUser;

    属性

    当前用户对象包含以下属性:

    复制
    
    @property (nonatomic, strong) NSString *appKey;
    @property (nonatomic, strong) NSString *secret;
    @property (nonatomic, strong) NSString *token;
    @property (nonatomic, strong) NSString *imToken;
    @property (nonatomic, strong) Y2WContacts *contact
    @property (nonatomic, strong) Y2WSessions *session
    @property (nonatomic, strong) Y2WUserSessions *use
    @property (nonatomic, strong) Y2WUserConversations
    @property (nonatomic, strong) Y2WCurrentUserRemote
    @property (nonatomic, strong) Y2WBridge *bridge;

    远程方法

    当前用户对象包含以下远程方法:

    • 同步获取用于连接y2wIM消息推送服务器的凭证
      复制
      
      [currentUser.remote syncIMTokenDidCompletion:^(NSError *error) {
      
          if (error) {
            // 同步失败
            return;
          }
      
          // 同步成功
      }];

    初始化

    当前用户对象初始化时会做以下工作:

    1. 创建用户会话管理对象:userConversations
    2. 创建联系人管理对象:contacts
    3. 创建群组管理对象:userSessions
    4. 创建会话管理对象:sessions
    5. 使用数据库中的数据创建/填充以下对象:
      • 当前用户
      • 当前用户所有相关的用户列表(联系人,群成员包含的用户信息)
      • 用户会话列表
      • 联系人列表
      • 群组列表
      • 会话及会话成员列表

    用户会话

    用户会话由服务端管理,客户端不能主动创建,只需通过同步获取最新的用户会话信息,用户会话包含如下对象:

    • 用户会话管理对象UserConversations:包含同步时间戳,并负责管理用户会话列表
    • 用户会话对象UserConversation:包含用户会话信息

    UserConversations

    用户会话管理对象,管理列表,查询与同步等工作

    属性

    UserConversations包含以下属性:

    复制
    
    /**
     *  当前生命周期所维持的当前登录用户
     */
    @property (nonatomic, weak) Y2WCurrentUser *user;
    
    /**
     *  用户回话同步时间戳
     */
    @property (nonatomic, strong) NSString *updatedAt;
    
    /**
     *  远程方法封装对象
     */
    @property (nonatomic, strong) Y2WUserConversationsRemote *remote;

    方法

    UserConversations包含以下本地方法

    • 添加和移除委托对象
      复制
      
      
      /**
       *  添加委托对象(此对象需要实现Y2WUserConversationsDelegate协议)
       *
       *  @param delegate 委托对象
       */
      [userConversations addDelegate:delegate];
      
      
      
      /**
       *  移除委托对象
       *
       *  @param delegate 委托对象
       */
      [userConversations removeDelegate:delegate];
    • 获取用户会话
      复制
      
      /**
       *  通过目标ID和会话类型获取一个会话对象
       *
       *  @param targetId 会话目标ID(目标是个人为对方用户ID,否则为sessionId)
       *  @param type     会话类型(@"p2p",@"group")
       *  type == @"p2p":targetId = user.userId(对方);
       *  type == @"group":targetId = session.sessionId(会话ID)
       *  @return userConversation
       */
      Y2WUserConversation *userConversation = [userConversations getUserConversationWithTargetId:targetId
                                                                                            type:type];
    • 获取用户会话列表
      复制
      
      /**
       * 获取用户会话列表
       * @returns @[userConversation1,userConversation2];
       */
      NSArray *userConversationArray = [userConversations getUserConversations];

    UserConversations包含以下远程方法

    • 同步用户会话
      复制
      
      /**
       * 激活用户会话同步
       * 同步完成后userConversations会通过协议方法通知实现了Y2WUserConversationsDelegate协议的对象
       */
      [userConversations.remote sync];
    • 删除用户会话
      复制
      
      /**
       *  删除一个用户会话
       *  @param userConversation: 要删除的用户会话对象
       */
      [userConversations.remote deleteUserConversation:userConversation
                                               success:^{
      
                                                  // 删除成功
      
                                             } failure:^(NSError *error) {
      
                                                  // 删除失败
                                             }];

    UserConversation

    用户会话对象,包含用户会话信息

    属性

    UserConversation包含以下属性:

    复制
    
    // 用户会话从属于用户会话管理对象,此处保存对其的引用
    @property (nonatomic, weak) Y2WUserConversations *userConversations;
    
    // 用户会话ID
    @property (nonatomic, copy) NSString *userConversationId;
    
    // 名字
    @property (nonatomic, copy) NSString *name;
    
    // 头像地址
    @property (nonatomic, copy) NSString *avatarUrl;
    
    // 会话类型@[@"p2p",@"group"]
    @property (nonatomic, copy) NSString *type;
    
    // 会话目标ID
    @property (nonatomic, copy) NSString *targetId;
    
    // 创建时间
    @property (nonatomic, copy) NSString *createdAt;
    
    // 更新时间
    @property (nonatomic, copy) NSString *updatedAt;
    
    // 未读消息数
    @property (nonatomic, assign) NSUInteger unRead;
    
    // 最新一条消息
    @property (nonatomic, retain) Y2WMessage *lastMessage;
    
    // 如果为YES, 表示服务器已删除了此实体,同步时请在客户端也删除
    @property (nonatomic, assign) BOOL isDelete;
    
    // 是否显示
    @property (nonatomic, assign) BOOL visiable;
    
    // 置顶标志
    @property (nonatomic, assign) BOOL top;

    方法

    UserConversation包含以下方法

    • 获取名称
      复制
      
      /**
       *  获取此用户会话名
       */
      NSString *name = [userConversation getName];
    • 获取头像
      复制
      
      /**
       *  获取此用户会话的头像地址
       */
      NSString *avatarUrl = [userConversation getAvatarUrl];
    • 获取目标会话
      复制
      
      /**
       *  获取此用户会话的session
       */
      [userConversation getSessionDidCompletion:^(Y2WSession *session, NSError *error) {
      
          if (error) {
              // 获取失败
              return;
          }
      
          // 获取成功
      }];

    联系人

    联系人包含如下对象:

    • 联系人管理对象Contacts:包含同步时间戳,并负责管理联系人列表
    • 联系人对象Contact:包含联系人信息

    Contacts

    联系人管理对象,管理列表,查询与同步等工作

    属性

    Contacts包含以下属性:

    复制
    
    // 联系人管理对象从属于某一用户,此处保存对用户的引用,通常为当前用户
    @property (nonatomic,weak) Y2WCurrentUser *user;
    
    // 同步时间戳,同步时使用此时间戳获取之后的数据
    @property (nonatomic, copy) NSString *updatedAt;
    
    // 远程方法封装对象
    @property (nonatomic, strong) Y2WContactsRemote *remote;

    方法

    Contacts包含以下本地方法

    • 添加和移除委托对象
      复制
      
      /**
       *  添加委托对象(此对象需要实现Y2WContactsDelegate协议)
       *
       *  @param delegate 委托对象
       */
      [contacts addDelegate:delegate];
      
      
      
      /**
       *  移除委托对象
       *
       *  @param delegate 委托对象
       */
      [contacts removeDelegate:delegate];
    • 获取联系人
      复制
      
      /**
       * 获取联系人
       * @param userId:用户id
       * @returns contact
       */
      Y2WContact *contact = [contacts getContactWithUID:userId];
    • 获取联系人列表
      复制
      
      /**
       * 获取联系人列表
       * @returns @[contact1,contact2]
       */
      NSArray *contactArray = [contacts getContacts];

    Contacts包含以下远程方法

    • 同步联系人
      复制
      
      /**
       * 激活用户会话同步
       * 同步完成后contacts会通过协议方法通知实现了Y2WContactsDelegate协议的对象
       */
      [contacts.remote sync];
    • 添加联系人
      复制
      
      // 根据名字和ID创建一个联系人对象
      Y2WContact *contact = [[Y2WContact alloc] init];
      contact.userId = userId;
      contact.name = name;
      
      /**
       * 添加联系人
       * @param contact: 联系人对象
       */
      [contacts.remote addContact:contact success:^{
      
          // 添加成功
      
      } failure:^(NSError *error) {
      
          // 添加失败
      }];
    • 删除联系人
      复制
      
      /**
       * 删除联系人
       * @param contact: 联系人对象
       */
      [contacts.remote deleteContact:contact success:^{
      
          // 删除成功
      
      } failure:^(NSError *error) {
      
          // 删除失败
      }];

    提醒

    添加或删除联系人后使用同步方法更新联系人

    Contact

    联系人对象

    属性

    Contact包含以下属性:

    复制
    
    /**
     *  联系人从属于联系人管理对象,此处保存对其的引用
     */
    @property (nonatomic, weak) Y2WContacts *contacts;
    
    /**
     *  联系人ID
     */
    @property (nonatomic, copy) NSString *contactId;
    
    /**
     *  联系人的用户ID
     */
    @property (nonatomic, copy) NSString *userId;
    
    /**
     *  联系人名字
     */
    @property (nonatomic, copy) NSString *name;
    
    /**
     *  联系人用户姓名的拼音(格式为每个字的拼音为一个元素组成的数)
     *  示例:
     *     姓名:张三
     *     拼音:@[@"zhang",@"san"];
     */
    @property (nonatomic, strong) NSArray *pinyin;
    
    /**
     *  当前登录用户对联系人的备注
     */
    @property (nonatomic, copy) NSString *title;
    
    /**
     *  当前登录用户对联系人的备注拼音
     */
    @property (nonatomic, copy) NSString *titlePinyin;
    
    /**
     *
     */
    @property (nonatomic, copy) NSString *remark;
    
    /**
     *  联系人创建时间
     */
    @property (nonatomic, copy) NSString *createdAt;
    
    /**
     *  联系人更新时间
     */
    @property (nonatomic, copy) NSString *updatedAt;
    
    /**
     *  联系人头像URl
     */
    @property (nonatomic, copy) NSString *avatarUrl;
    
    /**
     *  如果为YES, 表示服务器已删除了此实体,同步时请在客户端也删除
     */
    @property (nonatomic, assign) BOOL isDelete;
    
    /**
     *  联系人的本身用户对象
     */
    @property (nonatomic, strong) Y2WUser *user;

    方法

    Contact包含以下方法

    • 获取用户会话
      复制
      
      /**
       *  获取此联系人的用户会话
       */
      Y2WUserConversation *userConversation = [contact getUserConversation];
    • 获取session
      复制
      
      /**
       *  获取当前用户与此联系人的session对象
       */
      [contact getSessionDidCompletion:^(Y2WSession *session, NSError *error) {
      
          if (error) {
              // 获取失败
              return;
          }
      
          // 获取成功
      }];

    群组

    群组在项目中定义为"收藏到群组列表的多人会话",群组包含如下对象:

    • 群组管理对象UserSessions:包含同步时间戳,并负责管理群组列表
    • 群组对象UserSession:包含群组信息

    UserSessions

    群组管理对象,管理列表,查询与同步等工作

    属性

    UserSessions包含以下属性:

    复制
    
    /**
     *  群组管理对象从属于某一用户,此处保存对用户的引用,通常为当前用户
     */
    @property (nonatomic, weak) Y2WCurrentUser *user;
    
    /**
     *  远程方法封装对象
     */
    @property (nonatomic, strong) Y2WUserSessionsRemote *remote;
    
    /**
     *  同步时间戳,同步时使用此时间戳获取之后的数据
     */
    @property (nonatomic, copy) NSString *updatedAt;

    方法

    UserSessions包含以下本地方法

    • 初始化
      复制
      
      /**
       *  创建一个用户群组管理对象,初始化并添加依赖
       */
      Y2WUserSessions *userSessions = [[Y2WUserSessions alloc] initWithCurrentUser:currentUser];
    • 添加和移除委托对象
      复制
      
      /**
       *  添加委托对象(此对象需要实现Y2WUserSessionsDelegate协议)
       *
       *  @param delegate 委托对象
       */
      [userSessions addDelegate:delegate];
      
      
      
      /**
       *  移除委托对象
       *
       *  @param delegate 委托对象
       */
      [userSessions removeDelegate:delegate];
    • 获取群组列表
      复制
      
      /**
       *  获取群组列表
       *
       *  @return @[userSession1,userSession2];
       */
      NSArray *userSessionArray = [userSessions getUserSessions];

    UserSessions包含以下远程方法

    • 同步群组
      复制
      
      /**
       * 激活用户会话同步
       * 同步完成后userSessions会通过协议方法通知实现了Y2WUserSessionsDelegate协议的对象
       */
      [userSessions.remote sync];
    • 收藏群组
      复制
      
                                          /**
                                          * 收藏群组
                                          * @param sessionId:会话Id
                                          * @param name:群组名称
                                          * @param avatarUrl:群组头像
                                          * @param cb
                                          */
                                          userSessions.remote.add(sessionId, name, avatarUrl, function(err){
                                          if(err){
                                          alert("收藏群组失败:" + err);
                                          return;
                                          }
                                          alert("收藏群组成功");
                                          })
    • 取消收藏群组
      复制
      
      /**
       *  取消收藏群组
       *
       * @param userSession: 要移除的群组对象
       */
      [userSessions.remote deleteUserSession:userSession success:^{
      
          // 删除成功
      
      } failure:^(NSError *error) {
      
          // 删除失败
      }];

    UserSession

    群组对象,包含群组信息

    属性

    UserSession包含以下属性:

    复制
    
    /**
     *  会话从属于会话管理对象,此处保存对其的引用
     */
    @property (nonatomic, weak) Y2WUserSessions *userSessions;
    
    /**
     *  群组ID
     */
    @property (nonatomic, copy) NSString *userSessionId;
    
    /**
     *  会话ID
     */
    @property (nonatomic, copy) NSString *sessionId;
    
    /**
     *  群组名
     */
    @property (nonatomic, copy) NSString *name;
    
    /**
     *  头像地址
     */
    @property (nonatomic, copy) NSString *avatarUrl;
    
    /**
     *  会话创建时间
     */
    @property (nonatomic, copy) NSString *createdAt;
    
    /**
     *  会话更新时间
     */
    @property (nonatomic, copy) NSString *updatedAt;
    
    /**
     *  删除标志
     */
    @property (nonatomic, assign) BOOL isDelete;

    方法

    UserSession包含以下本地方法

    • 获取用户会话
      复制
      
      /**
       *  获取此用户群组的用户会话
       */
      Y2WUserConversation *userConversation = [userSession getUserConversation];
    • 获取session
      复制
      
      /**
       *  获取此用户群组的session对象
       */
      [userSession getSessionDidCompletion:^(Y2WSession *session, NSError *error) {
      
          if (error) {
              // 获取失败
              return;
          }
      
          // 获取成功
      }];

    Session

    Session:会话

    • 会话管理对象Sessions:负责管理会话集合
    • 会话对象Session:包含会话信息,并负责管理该会话的成员与消息

    Sessions

    会话管理对象,管理会话集合

    属性

    Sessions包含以下属性:

    复制
    
    /**
     *  群组管理对象从属于某一用户,此处保存对用户的引用,通常为当前用户
     */
    @property (nonatomic, weak)Y2WCurrentUser *user;
    
    /**
     *  远程方法封装对象
     */
    @property (nonatomic, retain) Y2WSessionsRemote *remote;

    方法

    获取会话

    复制
    
    /**
     * 获取会话
     * @param targetId 会话目标ID
     * type: @"p2p",targetId=user.userId(对方用户);
     * type: @"group",targetId=session.sessionId(会话ID)
     * @param type @[@"p2p",@"group"] 会话场景类型
     */
    [sessions getSessionWithTargetId:targetId
                                type:type
                             success:^(Y2WSession *session) {
    
                                // 获取成功,返回session对象
    
                           } failure:^(NSError *error) {
    
                                // 获取失败
                           }];

    重要

    1. 此方法先在本地搜索,如果本地不存在将去服务器获取,此方法必定会返回session

    Sessions包含以下远程方法

    • 添加会话
      复制
      
      /**
       * 添加会话
       * @param type:@[@"p2p",@"group"]:会话场景类型
       * @param name:名称
       * @param secureType:@[@"public",@"private"]:安全类型,通常使用private
       * @param avatarUrl:头像地址
       */
      [sessions.remote addWithName:name
                              type:type
                        secureType:secureType
                         avatarUrl:avatarUrl
                           success:^(Y2WSession *session) {
      
                              // 创建成功,返回session对象
      
                         } failure:^(NSError *error) {
      
                              // 创建失败
                         }];

    Session

    会话对象,包含会话信息,并负责管理该会话的成员与消息

    属性

    Session包含以下属性:

    复制
    
    /**
     *  会话从属于会话管理对象,此处保存对其的引用
     */
    @property (nonatomic, weak) Y2WSessions *sessions;
    
    /**
     *  用于本地查找
     */
    @property (nonatomic, copy) NSString *targetID;
    
    /**
     *  会话唯一标识码
     */
    @property (nonatomic, copy) NSString *sessionId;
    
    /**
     *  会话名称
     */
    @property (nonatomic, copy) NSString *name;
    
    /**
     *  会话类型
     */
    @property (nonatomic, copy) NSString *type;
    
    /**
     *  会话的头像地址
     */
    @property (nonatomic, copy) NSString *avatarUrl;
    
    /**
     *  会话中会话成员创建时间
     */
    @property (nonatomic, copy) NSString *createMTS;
    
    /**
     *  会话中会话成员更新时间
     */
    @property (nonatomic, copy) NSString *updateMTS;
    
    /**
     *  会话创建时间
     */
    @property (nonatomic, copy) NSString *createdAt;
    
    /**
     *  会话更新时间
     */
    @property (nonatomic, copy) NSString *updatedAt;
    
    /**
     *  消息管理对象
     */
    @property (nonatomic, strong) Y2WMessages *messages;
    
    /**
     *  会话成员管理对象
     */
    @property (nonatomic, strong) Y2WSessionMembers *members;

    SessionMember

    SessionMember:会话成员

    • 会话成员管理对象SessionMembers:负责管理会话成员同步,增删等操作
    • 会话成员对象SessionMember:包含会话成员信息

    SessionMembers

    会话成员管理对象,负责管理会话成员同步,增删改查等操作

    属性

    SessionMembers包含以下属性:

    复制
    
    /**
     *  会话成员管理对象从属于某一会话,此处保存对会话的引用
     */
    @property (nonatomic, weak) Y2WSession *session;
    
    /**
     *  远程方法封装对象
     */
    @property (nonatomic, strong) Y2WSessionMembersRemote *remote;
    
    /**
     *  会话成员创建时间,用于推送消息
     */
    @property (nonatomic, strong) NSString *createdAt;
    
    /**
     *  同步时间戳,同步时使用此时间戳获取之后的数据
     */
    @property (nonatomic, strong) NSString *updatedAt;

    方法

    SessionMembers包含以下本地方法

    • 获取会话成员
      复制
      
      /**
       * 获取会话成员
       * @param userId:用户ID
       * @returns sessionMember
       */
      Y2WSessionMember *sessionMember = [sessionMembers getMemberWithUserId:userId];
    • 获取会话成员列表
      复制
      
      /**
       * 获取会话成员列表
       * @returns @[sessionMember1,sessionMember2];
       */
      NSArray *sessionMemberArray = [sessionMembers getMembers];

    SessionMembers包含以下远程方法

    • 同步会话成员
      复制
      
      /**
       * 激活用户会话同步
       * 同步完成后sessionMembers会通过协议方法通知实现了Y2WSessionMembersDelegate协议的对象
       */
      [sessionMembers.remote sync];
    • 添加会话成员
      复制
      
      /**
       * 构建成员对象
       * @param userId:用户id
       * @param name:用户名称
       * @param role:会话成员角色,master:群主;admin:管理员;user:一般成员
       * @param avatarUrl:头像地址
       * @param status:用户状态,active:有效;inactive:封禁
       */
      Y2WSessionMember *sessionMember = [[Y2WSessionMember alloc] init];
      sessionMember.name = name;
      sessionMember.userId = userId;
      sessionMember.avatarUrl = avatarUrl;
      sessionMember.role = role;
      sessionMember.status = status;
      
      
      /**
       * 添加会话成员
       */
      [sessionMembers.remote addSessionMember:sessionMember success:^{
      
          // 添加成功
      
      } failure:^(NSError *error) {
      
          // 添加失败
      }];
    • 删除会话成员
      复制
      
      /**
       * 删除会话成员
       */
      [sessionMembers.remote deleteSessionMember:sessionMember success:^{
      
          // 删除成功
      
      } failure:^(NSError *error) {
      
          // 删除失败
      }];

    SessionMember

    会话成员对象,包含会话成员信息

    属性

    SessionMember包含以下属性:

    复制
    
    /**
     *  会话成员从属于会话成员管理对象,此处保存对其的引用
     */
    @property (nonatomic, weak) Y2WSessionMembers *sessionMembers;
    
    /**
     *  会话成员唯一标识码
     */
    @property (nonatomic, copy) NSString *sessionMemberId;
    
    /**
     *  用户唯一标识码
     */
    @property (nonatomic, copy) NSString *userId;
    
    /**
     *  会话成员名称
     */
    @property (nonatomic, copy) NSString *name;
    
    /**
     *  成员头像
     */
    @property (nonatomic, copy) NSString *avatarUrl;
    
    /**
     *  联系人用户姓名的拼音(格式为每个字的拼音为一个元素组成的数)
     *  示例:
     *     姓名:张三
     *     拼音:@[@"zhang",@"san"];
     */
    @property (nonatomic, strong) NSArray *pinyin;
    
    /**
     *  创建时间
     */
    @property (nonatomic, copy) NSString *createdAt;
    
    /**
     *  修改时间
     */
    @property (nonatomic, copy) NSString *updatedAt;
    
    /**
     *  用户角色,"master", "admin", "user"
     */
    @property (nonatomic, copy) NSString *role;
    
    /**
     *  用户状态,有效(active),封禁(inactive)
     */
    @property (nonatomic, copy) NSString *status;
    
    /**
     *  如果为YES, 表示服务器已删除了此实体,同步时请在客户端也删除
     */
    @property (nonatomic, assign) BOOL isDelete;
    
    /**
     *  获取会话成员的用户信息
     */
    @property (nonatomic, strong) Y2WUser *user;

    消息

    消息包含如下对象:

    • 消息管理对象Messages:包含同步时间戳,负责管理消息列表
    • 消息对象Message:包含消息信息

    Messages

    消息管理对象,包含同步时间戳,负责管理消息列表

    属性

    Messages包含以下属性:

    复制
    
    /**
     *  消息管理对象从属于某一会话,此处保存对会话的引用
     */
    @property (nonatomic, weak) Y2WSession *session;
    
    /**
     *  远程方法封装对象
     */
    @property (nonatomic, retain) Y2WMessagesRemote *remote;
    
    /**
     *  同步时间戳,同步时使用此时间戳获取之后的数据
     */
    @property (nonatomic, copy) NSString *updateAt;
    
    /**
     *  消息数量
     */
    @property (nonatomic, assign, readonly) NSUInteger count;

    方法

    Messages包含以下本地方法

    • 添加和移除委托对象
      复制
      
      /**
       *  添加委托对象(此对象需要实现Y2WMessagesDelegate协议)
       *
       *  @param delegate 委托对象
       */
      [messages addDelegate:delegate];
      
      
      
      /**
       *  移除委托对象
       *
       *  @param delegate 委托对象
       */
      [messages removeDelegate:delegate];
    • 发送消息
      复制
      
      /**
       * 发送消息
       */
      [messages sendMessage:message];
      
      
      /**
       * 重发消息
       */
      [messages resendMessage:message];

    Messages包含以下远程方法

    • 保存消息
      复制
      
      /**
       *  保存一条消息到session
       *
       *  @param message 要保存的消息对象
       */
      [messages.remote storeMessages:message success:^(Y2WMessage *message) {
      
          // 保存成功,返回保存的消息
      
      } failure:^(NSError *error) {
      
          // 保存失败
      }];
    • 同步消息
      复制
      
      /**
       * 激活用户会话同步
       * 同步完成后messages会通过协议方法通知实现了Y2WMessagesDelegate协议的对象
       */
      [messages.remote sync];
    • 获取历史消息
      复制
      
      /**
       *  获取历史消息
       */
      [messages.remote getLastMessageDidCompletionBlock:^(NSArray *messageList) {
      
          // 获取历史消息成功,返回消息数组
      
      } failure:^(NSError *error) {
      
          // 获取历史消息失败
      }];

      提醒

      方法待定

    Message

    消息对象,包含消息信息

    属性

    Message包含以下属性:

    复制
    
    /**
     *  消息对象从属于消息管理对象,此处保存对其的引用
     */
    @property (nonatomic, weak) Y2WMessages *messages;
    
    /**
     *  消息内容
     */
    @property (nonatomic, retain) NSDictionary *content;
    
    /**
     *  消息文字内容
     */
    @property (nonatomic, copy) NSString *text;
    
    /**
     *  会话的唯一标识符
     */
    @property (nonatomic, copy) NSString *sessionId;
    
    /**
     *  消息唯一的标示码
     */
    @property (nonatomic, copy) NSString *messageId;
    
    /**
     *  消息的发送者
     */
    @property (nonatomic, copy) NSString *sender;
    
    /**
     *  消息类型["text"|"image"|"video"|"audio"|"file"]
     */
    @property (nonatomic, copy) NSString *type;
    
    /**
     *  消息状态["storing"|"stored"|"storefailed"]
     */
    @property (nonatomic, copy) NSString *status;
    
    /**
     *  消息创建时间
     */
    @property (nonatomic, copy) NSString *createdAt;
    
    /**
     *  消息更新时间
     */
    @property (nonatomic, copy) NSString *updatedAt;
    
    /**
     *  删除标志
     */
    @property (nonatomic, assign) BOOL isDelete;

    y2wIM推送服务

    Y2WIM推送服务

    • SDK为核心的消息同步协议实现,完成与服务器之间的信息交换。
    • Y2WIMSDK核心类IMCient:SDK是基于核心协议实现的完整的IM功能,实现了不同类型消息的收发,会话管理,群组,好友等功能。

    IMClient

    获取yun2winIMSDK的核心类

    通过此方法,获取yun2winIMSDK,访问对象中的属性和方法。

    复制
    
    /**
     *  获取yun2winIMSDK的核心类
     *
     *  @return 获取yun2winIMSDK
     */
    + (instancetype)shareY2WIMClient;

    初始化yun2winIMSDK

    初始化yun2winIMSDK,在初始化SDK所有功能之前,必须先初始化SDK.

    复制
    
    /**
     *  初始化TOKEN和UID
     *
     *  @param token 从平台获取token
     *  @param uid 从平台获取appkey
     */
    - (void)registerWithToken:(NSString *)token UID:(NSString *)uid;

    与yun2win服务器建立连接

    在App整个生命周期,您只需要调用一次此方法与yun2win服务器建立连接。 之后无论是网络出现异常或者App有前后台的切换等,SDK都会负责自动重连。

    复制
    
    /**
     *  与yun2win服务器建立连接
     */
    - (void)connect;

    与yun2win服务器断开连接

    因为SDK在前后台切换或者网络出现异常都会自动重连,会保证连接的可靠性。 所以除非您的App逻辑需要登出,否则一般不需要调用此方法进行手动断开。

    复制
    
    /**
     *  与yun2win服务器断开连接
     */
    - (void)disconnect;

    向yun2win服务器推送消息

    向yun2win服务器推送消息.

    IMSession:推送目标

    • 通过IMSessionProtocol协议建立IMSession
    • 推送消息时,imSession只有两个属性,id和mts
    • id表示将消息推送到哪个会话
    • mts(membersTimeStamp)是会话成员时间戳,会话成员变更时,此时间戳会更新,当发送消息时,推送服务器根据mts判断推送服务器保存的成员与业务服务器会话成员是否一致

    IMMessage:推送内容

    • 通过IMMessageProtocol协议建立IMMessage
    • 为保证业务数据的安全性,yun2win推送服务默认只推送同步通知,不推送任何实质内容
    • message也可由用户自定义推送任何信息
    复制
    
    /**
     *  推送消息
     *
     *  @param session 对象IMSession
     *  @param message 推送消息体
     */
    - (void)sendMessageWithSession:(id)session Message:(id)message;

    更新会话

    更新会话成员,保存推送消息到位。

    • 推送服务器不保存任何业务数据,不包含会话成员的个人信息,但必须同步业务服务器中会话成员的id,以便推送到位
    • 更新会话时,imSession需要额外的members属性,存放多个会话成员信息
    • 更新会话操作只有在以下两种情况下调用
      1. 推送服务器不存在此会话,此时需要将当前会话所有成员更新到推送服务器
      2. 推送服务器mts过期,此时推送服务器将返回服务端mts,客户端需要将此时间之后的成员变更(新增/删除)更新到推送服务器
    复制
    
    /**
     *  推送更新会话消息
     *
     *  @param session 通过IMSessionProtocol协议建立IMSession
     *  @param message 通过IMMessageProtocol协议建立会话成员消息体
     */
    - (void)updateSessionWithSession:(id)session Message:(id)message;

    StatusDefine

    各类状态码定义

    网络连接状态码

    复制
    
    /**
     *  网络连接状态码
     */
    typedef NS_ENUM(NSInteger,ConnectionStatus) {
        /**
         *  正在连接
         */
        connecting          = 0,
        /**
         *  已连接
         */
        connected           = 1,
        /**
         *  重连
         */
        reconnecting        = 2,
        /**
         *  网络断开
         */
        networkDisconnected = 3,
        /**
         *  断开连接
         */
        disconnected        = 100
    };

    消息推送返回码

    复制
    
    /**
     *  消息推送返回码
     */
    typedef NS_ENUM(NSInteger,ConnectionReturnCode) {
         /**
          *  协议错误
          */
         unacceptableProtocolVersion = 3,
         /**
          *  用户ID无效
          */
         uidIsInvalid                = 4,
         /**
          *  imToken无效
          */
         tokenIsInvalid              = 5,
         /**
          *  imToken过期
          */
         tokenHasExpired             = 6,
         /**
          *  appkey无效
          */
         appKeyIsInvalid             = 7,
         /**
          *  被踢出,同类型设备重复登录时,之前设备收到提出信息
          */
         kicked                      = 10,
         /**
          *  服务器不可达
          */
         serverUnavailable           = 99,
         /**
          *  服务器内部错误
          */
         serverInternalError         = 100
    };

    发送消息的回执

    复制
    
    /**
     *  发送消息的回执
     */
    typedef NS_ENUM(NSInteger,SendReturnCode) {
          /**
           *  推送成功
           */
          success                      = 20,
          /**
           *  推送超时
           */
          timeout_sendMessage          = 21,
          /**
           *  推送命令无效
           */
          cmdIsInvalid                 = 22,
          /**
           *  会话无效
           */
          sessionIsInvalid             = 23,
          /**
           *  会话ID无效
           */
          sessionIdIsInvalid           = 24,
          /**
           *  会话成员时间戳无效
           */
          sessionMTSIsInvalid          = 25,
          /**
           *  推送服务器不存在此会话
           */
          sessionOnServerIsNotExist    = 26,
          /**
           *  客户端会话成员时间戳过期
           */
          sessionMTSOnClientHasExpired = 27,
          /**
           *  推送服务器会员时间戳过期
           */
          sessionMTSOnServerHasExpired = 28,
          /**
           *  推送服务器会话成员无效
           */
          sessionMembersIsInvalid      = 29,
          /**
           *  推送内容是无效的JSON格式
           */
          invalidFormatOfJSONContent   = 30,
          /**
           *  会话成员不存在
           */
          sessionMembersIsNull         = 31
    };

    y2wIM用户使用手册

    用户使用手册

     

  • 相关阅读:
    201521044091《Java程序设计》第7周学习总结
    201521044091《java程序设计》第四次总结
    201521044091 《java程序设计》第八周学习总结
    201521044091 《Java程序设计》第5周学习总结
    201521044091 《Java程序设计》第2周学习总结
    201521044091 《Java程序设计》第3周学习总结
    MySQL设置字符集CHARACTER SET
    Create My MySQL configuration by Percona
    How to use jQuery to manipulate Cookies
    How to use OpenXml to import xml data to Sql server
  • 原文地址:https://www.cnblogs.com/yun2win/p/5761811.html
Copyright © 2011-2022 走看看