WeChat(微信SDK)Binding工程


WeChat(微信SDK)Binding工程

Xamarin.iOS


微信SDK中api的标准化,给很多第三方SDK起了引导作用,易信、新浪微博都参照了这个标准来编写api,这一定程度上对Xamarin第三方绑定工程带来了相当的好处,只要熟悉了其一的写法,其它都很容易进行编写,以下就直接上源码了(在Binding工程中ApiDefinitio文件中编写):
1.测试调用跟xcode工程是一样的(工程地址:https://code.csdn.NET/dengzhaowensky/xamarin_binding_wechat.Git

  1. //接收并处理来自微信终端程序的事件消息
  2. [Model]
  3. [BaseType(typeof(NSObject))]
  4. interface WXApiDelegate{
  5. [Export("onReq:")]
  6. void onReq(BaseReq req);
  7. [Export("onResp:")]
  8. void onResp(BaseResp resp);
  9. }
  10. //微信Api接口函数类
  11. [BaseType(typeof(NSObject))]
  12. interface WXApi{
  13. [Static,Export("registerApp:")]
  14. bool registerApp(string appId);
  15. [Static,Export("registerApp:withDescription:")]
  16. bool registerApp(string appId,string appdesc);
  17. [Static,Export("handleOpenURL:delegate:")]
  18. bool handleOpenURL(NSUrl url,WXApiDelegate wxApiDelegate);
  19. [Static,Export("isWXAppInstalled")]
  20. bool isWXAppInstalled();
  21. [Static,Export("isWXAppSupportApi")]
  22. bool isWXAppSupportApi();
  23. [Static,Export("getWXAppInstallUrl")]
  24. string getWXAppInstallUrl();
  25. [Static,Export("getApiVersion")]
  26. string getApiVersion();
  27. [Static,Export("openWXApp")]
  28. bool openWXApp();
  29. [Static,Export("sendReq:")]
  30. bool sendReq(BaseReq req);
  31. [Static,Export("sendResp:")]
  32. bool sendResp(BaseResp resp);
  33. }
  34. //多媒体消息结构体
  35. [BaseType(typeof(NSObject))]
  36. interface WXMediaMessage{
  37. [Static,Export("message")]
  38. WXMediaMessage message();
  39. [Export("setThumbImage:")]
  40. void setThumbImage(UIImage image);
  41. [Export("title")]
  42. string title{ get; set; }
  43. [Export("description")]
  44. string description{ get; set; }
  45. [Export("thumbData")]
  46. NSData thumbData{ get; set; }
  47. [Export("mediaTagName")]
  48. string mediaTagName{ get; set; }
  49. [Export("mediaObject")]
  50. NSObject mediaObject{ get; set; }
  51. }
  52. //多媒体消息中包含的图片数据对象
  53. [BaseType(typeof(NSObject))]
  54. interface WXImageObject{
  55. [Static,Export("object")]
  56. WXImageObject getObject();
  57. [Export("imageData")]
  58. NSData imageData{ get; set; }
  59. [Export("imageUrl")]
  60. string imageUrl{ get; set; }
  61. }
  62. //多媒体消息中包含的音乐数据对象
  63. [BaseType(typeof(NSObject))]
  64. interface WXMusicObject{
  65. [Static,Export("object")]
  66. WXMusicObject getObject();
  67. [Export("imageData")]
  68. NSData imageData{ get; set; }
  69. [Export("imageUrl")]
  70. string imageUrl{ get; set; }
  71. }
  72. //多媒体消息中包含的音乐数据对象
  73. [BaseType(typeof(NSObject))]
  74. interface WXVideoObject{
  75. [Static,Export("object")]
  76. WXVideoObject getObject();
  77. [Export("videoUrl")]
  78. string videoUrl{ get; set; }
  79. [Export("videoLowBandUrl")]
  80. string videoLowBandUrl{ get; set; }
  81. }
  82. //多媒体消息中包含的音乐数据对象
  83. [BaseType(typeof(NSObject))]
  84. interface WXWebpageObject{
  85. [Static,Export("object")]
  86. WXWebpageObject getObject();
  87. [Export("webpageUrl")]
  88. string webpageUrl{ get; set; }
  89. }
  90. //多媒体消息中包含的App扩展数据对象
  91. [BaseType(typeof(NSObject))]
  92. interface WXAppExtendObject{
  93. [Static,Export("object")]
  94. WXAppExtendObject getObject();
  95. [Export("fileData")]
  96. NSData fileData{ get; set; }
  97. [Export("extInfo")]
  98. string extInfo{ get; set; }
  99. [Export("url")]
  100. string url{ get; set; }
  101. }
  102. //多媒体消息中包含的表情数据对象
  103. [BaseType(typeof(NSObject))]
  104. interface WXEmoticonObject{
  105. [Static,Export("object")]
  106. WXEmoticonObject getObject();
  107. [Export("emoticonData")]
  108. NSData emoticonData{ get; set; }
  109. }
  110. [BaseType(typeof(NSObject))]
  111. interface WXFileObject{
  112. [Static,Export("object")]
  113. WXFileObject getObject();
  114. [Export("fileExtension")]
  115. string fileExtension{ get; set; }
  116. [Export("fileData")]
  117. NSData fileData{ get; set; }
  118. }
  119. // 该类为微信终端SDK所有请求类的基类
  120. [BaseType(typeof(NSObject))]
  121. interface BaseReq{
  122. [Export("type")]
  123. int type{ get; set; }
  124. }
  125. // 该类为微信终端SDK所有响应类的基类
  126. [BaseType(typeof(NSObject))]
  127. interface BaseResp{
  128. [Export("errCode")]
  129. int errCode{ get; set; }
  130. [Export("errStr")]
  131. string errStr{ get; set; }
  132. [Export("type")]
  133. int type{ get; set; }
  134. }
  135. [BaseType(typeof(BaseReq))]
  136. interface SendMessageToWXReq{
  137. [Export("text")]
  138. string text{ get; set; }
  139. [Export("message")]
  140. WXMediaMessage message{ get; set; }
  141. [Export("bText")]
  142. bool bText{ get; set; }
  143. [Export("scene")]
  144. int scene{ get; set; }
  145. }
  146. [BaseType(typeof(BaseResp))]
  147. interface SendMessageToWXResp{
  148. }
  149. [BaseType(typeof(BaseReq))]
  150. interface GetMessageFromWXReq{
  151. }
  152. [BaseType(typeof(BaseResp))]
  153. interface GetMessageFromWXResp{
  154. [Export("text")]
  155. string text{ get; set; }
  156. [Export("message")]
  157. WXMediaMessage message{ get; set; }
  158. [Export("bText")]
  159. bool bText{ get; set; }
  160. }
  161. [BaseType(typeof(BaseReq))]
  162. interface ShowMessageFromWXReq{
  163. [Export("message")]
  164. WXMediaMessage message{ get; set; }
  165. }
  166. [BaseType(typeof(BaseResp))]
  167. interface ShowMessageFromWXResp{
  168. }
  169. [BaseType(typeof(BaseReq))]
  170. interface LaunchFromWXReq{
  171. }

枚举类型(StructsAndEnums.cs)

  1. //错误码
  2. public enum WXErrCode {
  3. WXSuccess = 0, /**< 成功 */
  4. WXErrCodeCommon = -1, /**< 普通错误类型 */
  5. WXErrCodeUserCancel = -2, /**< 用户点击取消并返回 */
  6. WXErrCodeSentFail = -3, /**< 发送失败 */
  7. WXErrCodeAuthDeny = -4, /**< 授权失败 */
  8. WXErrCodeUnsupport = -5, /**< 微信不支持 */
  9. }
  10. //请求发送场景
  11. public enum WXScene {
  12. WXSceneSession = 0, /**< 聊天界面 */
  13. WXSceneTimeline = 1, /**< 朋友圈 */
  14. WXSceneFavorite = 2, /**< 收藏 */
  15. }

作者: zhaowensky_126
原文地址:http://blog.csdn.net/zhaowensky_126/article/details/34815367

分享到