C# 调用腾讯即时通信 IM的示例

这篇文章主要介绍了C# 调用腾讯即时通信 IM的示例,帮助大家更好的理解和使用c#,感兴趣的朋友可以了解下

IM SDK API 概述 https://cloud.tencent.com/document/product/269/33543

 ///  /// IM SDK 初始化。 ///  ///  ///  ///  [DllImport(@"imsdk.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] public extern static int TIMInit(long sdk_app_id, string json_sdk_config);
 ///  /// 登录 ///  /// 用户id /// 签名 ///  ///  [DllImport(@"imsdk.dll", CallingConvention = CallingConvention.Cdecl)] private extern static int TIMLogin(string user_id, string user_sig, TIMCommCallback cb);
 ///  /// 接收新消息回调 ///  ///  [DllImport(@"imsdk.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)] private extern static void TIMAddRecvNewMsgCallback(delegateTIMRecvNewMsgCallback cb);
 public void ImInit() { int sdk_app_id = 1400000000; var data = new { sdk_config_log_file_path = AppDomain.CurrentDomain.BaseDirectory, sdk_config_config_file_path = AppDomain.CurrentDomain.BaseDirectory }; TIMInit(sdk_app_id, JsonConvert.SerializeObject(data)); TIMAddRecvNewMsgCallback(TIMRecvNewMsgCallback); var tLSSig = new TLSSigAPIv2(sdk_app_id, "163250645178b565ffc0b22618d14a88d8a91d86f0e76813313197a5xxxxxxx"); TIMLogin("用户", tLSSig.GenSig("用户"), CommCallback); } private delegate int TIMCommCallback(int code, string desc, string json_params); private int CommCallback(int code, string desc, string json_params) { return code; } public delegate void delegateTIMRecvNewMsgCallback([MarshalAs(UnmanagedType.CustomMarshaler, MarshalTypeRef = typeof(Utf8Marshaler))] string json_msg_array, IntPtr user_data);; private void TIMRecvNewMsgCallback(string json_msg_array, IntPtr user_data) { var b = Encoding.Default.GetBytes(json_msg_array); richTextBox1.AppendText(Encoding.UTF8.GetString(b)); }
 private void Form1_Load(object sender, EventArgs e) { ImInit(); }
 public class Utf8Marshaler : ICustomMarshaler     {         public void CleanUpManagedData(object managedObj)         {         }           public void CleanUpNativeData(IntPtr pNativeData)         {             Marshal.FreeHGlobal(pNativeData);         }           public int GetNativeDataSize()         {             return -1;         }           public IntPtr MarshalManagedToNative(object managedObj)         {             if (object.ReferenceEquals(managedObj, null))                 return IntPtr.Zero;             if (!(managedObj is string))                 throw new InvalidOperationException();               byte[] utf8Bytes = Encoding.UTF8.GetBytes((string)managedObj);             IntPtr ptr = Marshal.AllocHGlobal(utf8Bytes.Length + 1);             Marshal.Copy(utf8Bytes, 0, ptr, utf8Bytes.Length);             Marshal.WriteByte(ptr, utf8Bytes.Length, 0);             return ptr;         }           public object MarshalNativeToManaged(IntPtr pNativeData)         {             if (pNativeData == IntPtr.Zero)                 return null;               List bytes = new List();             for (int offset = 0; ; offset++)             {                 byte b = Marshal.ReadByte(pNativeData, offset);                 if (b == 0)                     break;                 else                     bytes.Add(b);             }             return Encoding.UTF8.GetString(bytes.ToArray(), 0, bytes.Count);         }           private static readonly Utf8Marshaler Instance = new Utf8Marshaler();         public static ICustomMarshaler GetInstance(string cookie)         {             return Instance;         }     }

以上就是C# 调用腾讯即时通信 IM的示例的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 其他教程