微信SDK中api的标准化,给很多第三方SDK起了引导作用,易信、新浪微博都参照了这个标准来编写api,这一定程度上对Xamarin第三方绑定工程带来了相当的好处,只要熟悉了其一的写法,其它都很容易进行编写,以下就直接上源码了(在Binding工程中ApiDefinitio文件中编写):
1.测试调用跟xcode工程是一样的(工程地址:https://code.csdn.net/dengzhaowensky/xamarin_binding_wechat.git)
//接收并处理来自微信终端程序的事件消息
[Model]
[BaseType(typeof(NSObject))]
interface WXApiDelegate{
[Export("onReq:")]
void onReq(BaseReq req);
[Export("onResp:")]
void onResp(BaseResp resp);
}
//微信Api接口函数类
[BaseType(typeof(NSObject))]
interface WXApi{
[Static,Export("registerApp:")]
bool registerApp(string appId);
[Static,Export("registerApp:withDescription:")]
bool registerApp(string appId,string appdesc);
[Static,Export("handleOpenURL:delegate:")]
bool handleOpenURL(NSUrl url,WXApiDelegate wxApiDelegate);
[Static,Export("isWXAppInstalled")]
bool isWXAppInstalled();
[Static,Export("isWXAppSupportApi")]
bool isWXAppSupportApi();
[Static,Export("getWXAppInstallUrl")]
string getWXAppInstallUrl();
[Static,Export("getApiVersion")]
string getApiVersion();
[Static,Export("openWXApp")]
bool openWXApp();
[Static,Export("sendReq:")]
bool sendReq(BaseReq req);
[Static,Export("sendResp:")]
bool sendResp(BaseResp resp);
}
//多媒体消息结构体
[BaseType(typeof(NSObject))]
interface WXMediaMessage{
[Static,Export("message")]
WXMediaMessage message();
[Export("setThumbImage:")]
void setThumbImage(UIImage image);
[Export("title")]
string title{ get; set; }
[Export("description")]
string description{ get; set; }
[Export("thumbData")]
NSData thumbData{ get; set; }
[Export("mediaTagName")]
string mediaTagName{ get; set; }
[Export("mediaObject")]
NSObject mediaObject{ get; set; }
}
//多媒体消息中包含的图片数据对象
[BaseType(typeof(NSObject))]
interface WXImageObject{
[Static,Export("object")]
WXImageObject getObject();
[Export("imageData")]
NSData imageData{ get; set; }
[Export("imageUrl")]
string imageUrl{ get; set; }
}
//多媒体消息中包含的音乐数据对象
[BaseType(typeof(NSObject))]
interface WXMusicObject{
[Static,Export("object")]
WXMusicObject getObject();
[Export("imageData")]
NSData imageData{ get; set; }
[Export("imageUrl")]
string imageUrl{ get; set; }
}
//多媒体消息中包含的音乐数据对象
[BaseType(typeof(NSObject))]
interface WXVideoObject{
[Static,Export("object")]
WXVideoObject getObject();
[Export("videoUrl")]
string videoUrl{ get; set; }
[Export("videoLowBandUrl")]
string videoLowBandUrl{ get; set; }
}
//多媒体消息中包含的音乐数据对象
[BaseType(typeof(NSObject))]
interface WXWebpageObject{
[Static,Export("object")]
WXWebpageObject getObject();
[Export("webpageUrl")]
string webpageUrl{ get; set; }
}
//多媒体消息中包含的App扩展数据对象
[BaseType(typeof(NSObject))]
interface WXAppExtendObject{
[Static,Export("object")]
WXAppExtendObject getObject();
[Export("fileData")]
NSData fileData{ get; set; }
[Export("extInfo")]
string extInfo{ get; set; }
[Export("url")]
string url{ get; set; }
}
//多媒体消息中包含的表情数据对象
[BaseType(typeof(NSObject))]
interface WXEmoticonObject{
[Static,Export("object")]
WXEmoticonObject getObject();
[Export("emoticonData")]
NSData emoticonData{ get; set; }
}
[BaseType(typeof(NSObject))]
interface WXFileObject{
[Static,Export("object")]
WXFileObject getObject();
[Export("fileExtension")]
string fileExtension{ get; set; }
[Export("fileData")]
NSData fileData{ get; set; }
}
// 该类为微信终端SDK所有请求类的基类
[BaseType(typeof(NSObject))]
interface BaseReq{
[Export("type")]
int type{ get; set; }
}
// 该类为微信终端SDK所有响应类的基类
[BaseType(typeof(NSObject))]
interface BaseResp{
[Export("errCode")]
int errCode{ get; set; }
[Export("errStr")]
string errStr{ get; set; }
[Export("type")]
int type{ get; set; }
}
[BaseType(typeof(BaseReq))]
interface SendMessageToWXReq{
[Export("text")]
string text{ get; set; }
[Export("message")]
WXMediaMessage message{ get; set; }
[Export("bText")]
bool bText{ get; set; }
[Export("scene")]
int scene{ get; set; }
}
[BaseType(typeof(BaseResp))]
interface SendMessageToWXResp{
}
[BaseType(typeof(BaseReq))]
interface GetMessageFromWXReq{
}
[BaseType(typeof(BaseResp))]
interface GetMessageFromWXResp{
[Export("text")]
string text{ get; set; }
[Export("message")]
WXMediaMessage message{ get; set; }
[Export("bText")]
bool bText{ get; set; }
}
[BaseType(typeof(BaseReq))]
interface ShowMessageFromWXReq{
[Export("message")]
WXMediaMessage message{ get; set; }
}
[BaseType(typeof(BaseResp))]
interface ShowMessageFromWXResp{
}
[BaseType(typeof(BaseReq))]
interface LaunchFromWXReq{
}
枚举类型(StructsAndEnums.cs)
//错误码
public enum WXErrCode {
WXSuccess = 0, /**< 成功 */
WXErrCodeCommon = -1, /**< 普通错误类型 */
WXErrCodeUserCancel = -2, /**< 用户点击取消并返回 */
WXErrCodeSentFail = -3, /**< 发送失败 */
WXErrCodeAuthDeny = -4, /**< 授权失败 */
WXErrCodeUnsupport = -5, /**< 微信不支持 */
}
//请求发送场景
public enum WXScene {
WXSceneSession = 0, /**< 聊天界面 */
WXSceneTimeline = 1, /**< 朋友圈 */
WXSceneFavorite = 2, /**< 收藏 */
}