/// <summary>
        /// 独立信令 邀请接口
        /// 该接口用于邀请对方加入频道,邀请者必须是创建者或者是频道中成员。
        /// 如果需要对离线成员邀请,可以打开离线邀请开关并填写推送信息。被邀请者在线后通过离线通知接收到该邀请,并通过频道信息中的invalid_字段判断频道的有效性,也可以对所有离线消息处理后判断该邀请是否被取消。
        /// </summary>
        /// <param name="param">邀请的传入参数,其中邀请标识由用户生成,在取消邀请和邀请通知及接受拒绝时做对应</param>
        /// <param name="cb">结果回调见NimSignalingDef.cs,其中opt_res_param无效</param>
        public static void Invite(NIMSignalingInviteParam param, InviteDelegate cb)
        {
            int    nSizeOfParam = Marshal.SizeOf(param);
            IntPtr param_ptr    = Marshal.AllocHGlobal(nSizeOfParam);

            try
            {
                Marshal.StructureToPtr(param, param_ptr, false);
                var user_ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);
                SignalingNativeMethods.nim_signaling_invite(param_ptr, NimSignalingInviteCb, user_ptr);
            }
            catch (Exception ex)
            {
            }
            finally
            {
                Marshal.FreeHGlobal(param_ptr);
            }
        }
Exemple #2
0
        /// <summary>
        /// 独立信令 邀请接口
        /// 该接口用于邀请对方加入频道,邀请者必须是创建者或者是频道中成员。
        /// 如果需要对离线成员邀请,可以打开离线邀请开关并填写推送信息。被邀请者在线后通过离线通知接收到该邀请,并通过频道信息中的invalid_字段判断频道的有效性,也可以对所有离线消息处理后判断该邀请是否被取消。
        /// </summary>
        /// <param name="param">邀请的传入参数,其中邀请标识由用户生成,在取消邀请和邀请通知及接受拒绝时做对应</param>
        /// <param name="cb">结果回调见NimSignalingDef.cs,其中opt_res_param无效</param>
        public static void Invite(NIMSignalingInviteParam param, NimSignalingOptInviteHandler cb)
        {
            NIMSignalingInviteParam_C param_c = SignalHelper.GetNativeNIMSignalingInviteParam(param);
            int    nSizeOfParam = Marshal.SizeOf(param_c);
            IntPtr param_ptr    = Marshal.AllocHGlobal(nSizeOfParam);

            try
            {
                Marshal.StructureToPtr(param_c, param_ptr, false);
                var user_ptr = NimUtility.DelegateConverter.ConvertToIntPtr(cb);
                SignalingNativeMethods.nim_signaling_invite(param_ptr, NimSignalingInviteCb, user_ptr);
            }
            catch (Exception)
            {
                cb?.Invoke(NIMSignalingInviteResCode.kAbnormal);
            }
            finally
            {
                Marshal.FreeHGlobal(param_ptr);
            }
        }