├── .gitignore ├── README.md ├── WeChat.iOS.Samples ├── AppDelegate.cs ├── Assets.xcassets │ ├── AppIcon.appiconset │ │ └── Contents.json │ └── Contents.json ├── Entitlements.plist ├── Info.plist ├── LaunchScreen.storyboard ├── Main.cs ├── Main.storyboard ├── ViewController.cs ├── ViewController.designer.cs ├── WeChat.iOS.Samples.csproj └── WeChatAPI.cs ├── WeChat.iOS ├── ApiDefinition.cs ├── Properties │ └── AssemblyInfo.cs ├── Structs.cs └── WeChat.iOS.csproj └── WeChatSDK.sln /.gitignore: -------------------------------------------------------------------------------- 1 | # Autosave files 2 | *~ 3 | 4 | # build 5 | [Oo]bj/ 6 | [Bb]in/ 7 | packages/ 8 | TestResults/ 9 | 10 | # globs 11 | Makefile.in 12 | *.DS_Store 13 | *.sln.cache 14 | *.suo 15 | *.cache 16 | *.pidb 17 | *.userprefs 18 | *.usertasks 19 | config.log 20 | config.make 21 | config.status 22 | aclocal.m4 23 | install-sh 24 | autom4te.cache/ 25 | *.user 26 | *.tar.gz 27 | tarballs/ 28 | test-results/ 29 | Thumbs.db 30 | 31 | # Mac bundle stuff 32 | *.dmg 33 | *.app 34 | 35 | # resharper 36 | *_Resharper.* 37 | *.Resharper 38 | 39 | # dotCover 40 | *.dotCover 41 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is Sample for Xamarin iOS binding in WeChat iOS SDK . 2 | 3 | You can read my blog http://blog.csdn.net/kinfey/article/details/55517845 4 | 5 | -------------------------------------------------------------------------------- /WeChat.iOS.Samples/AppDelegate.cs: -------------------------------------------------------------------------------- 1 | using Foundation; 2 | using UIKit; 3 | 4 | namespace WeChat.iOS.Samples 5 | { 6 | // The UIApplicationDelegate for the application. This class is responsible for launching the 7 | // User Interface of the application, as well as listening (and optionally responding) to application events from iOS. 8 | [Register("AppDelegate")] 9 | public class AppDelegate : UIApplicationDelegate 10 | { 11 | // class-level declarations 12 | 13 | 14 | WeChatAPI wechat = new WeChatAPI(); 15 | 16 | public override UIWindow Window 17 | { 18 | get; 19 | set; 20 | } 21 | 22 | public override bool FinishedLaunching(UIApplication application, NSDictionary launchOptions) 23 | { 24 | // Override point for customization after application launch. 25 | // If not required for your application you can safely delete this method 26 | //WXApi.RegisterApp("wx3f94d21d67c4ae76"); 27 | wechat.Log("your open id"); 28 | return true; 29 | } 30 | 31 | public override bool HandleOpenURL(UIApplication application, NSUrl url) 32 | { 33 | var result = wechat.Open(url); 34 | return result; 35 | } 36 | 37 | public override bool OpenUrl(UIApplication application, NSUrl url, string sourceApplication, NSObject annotation) 38 | { 39 | 40 | //var result = WXApi.HandleOpenURL(url, this); 41 | var result = wechat.Open(url); 42 | return result; 43 | 44 | } 45 | 46 | public override void OnResignActivation(UIApplication application) 47 | { 48 | // Invoked when the application is about to move from active to inactive state. 49 | // This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) 50 | // or when the user quits the application and it begins the transition to the background state. 51 | // Games should use this method to pause the game. 52 | } 53 | 54 | public override void DidEnterBackground(UIApplication application) 55 | { 56 | // Use this method to release shared resources, save user data, invalidate timers and store the application state. 57 | // If your application supports background exection this method is called instead of WillTerminate when the user quits. 58 | } 59 | 60 | public override void WillEnterForeground(UIApplication application) 61 | { 62 | // Called as part of the transiton from background to active state. 63 | // Here you can undo many of the changes made on entering the background. 64 | } 65 | 66 | public override void OnActivated(UIApplication application) 67 | { 68 | // Restart any tasks that were paused (or not yet started) while the application was inactive. 69 | // If the application was previously in the background, optionally refresh the user interface. 70 | } 71 | 72 | public override void WillTerminate(UIApplication application) 73 | { 74 | // Called when the application is about to terminate. Save data, if needed. See also DidEnterBackground. 75 | } 76 | } 77 | } 78 | 79 | -------------------------------------------------------------------------------- /WeChat.iOS.Samples/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images": [ 3 | { 4 | "idiom": "iphone", 5 | "size": "29x29", 6 | "scale": "1x" 7 | }, 8 | { 9 | "idiom": "iphone", 10 | "size": "29x29", 11 | "scale": "2x" 12 | }, 13 | { 14 | "idiom": "iphone", 15 | "size": "29x29", 16 | "scale": "3x" 17 | }, 18 | { 19 | "idiom": "iphone", 20 | "size": "40x40", 21 | "scale": "2x" 22 | }, 23 | { 24 | "idiom": "iphone", 25 | "size": "40x40", 26 | "scale": "3x" 27 | }, 28 | { 29 | "idiom": "iphone", 30 | "size": "57x57", 31 | "scale": "1x" 32 | }, 33 | { 34 | "idiom": "iphone", 35 | "size": "57x57", 36 | "scale": "2x" 37 | }, 38 | { 39 | "idiom": "iphone", 40 | "size": "60x60", 41 | "scale": "2x" 42 | }, 43 | { 44 | "idiom": "iphone", 45 | "size": "60x60", 46 | "scale": "3x" 47 | }, 48 | { 49 | "idiom": "ipad", 50 | "size": "29x29", 51 | "scale": "1x" 52 | }, 53 | { 54 | "idiom": "ipad", 55 | "size": "29x29", 56 | "scale": "2x" 57 | }, 58 | { 59 | "idiom": "ipad", 60 | "size": "40x40", 61 | "scale": "1x" 62 | }, 63 | { 64 | "idiom": "ipad", 65 | "size": "40x40", 66 | "scale": "2x" 67 | }, 68 | { 69 | "idiom": "ipad", 70 | "size": "50x50", 71 | "scale": "1x" 72 | }, 73 | { 74 | "idiom": "ipad", 75 | "size": "50x50", 76 | "scale": "2x" 77 | }, 78 | { 79 | "idiom": "ipad", 80 | "size": "72x72", 81 | "scale": "1x" 82 | }, 83 | { 84 | "idiom": "ipad", 85 | "size": "72x72", 86 | "scale": "2x" 87 | }, 88 | { 89 | "idiom": "ipad", 90 | "size": "76x76", 91 | "scale": "1x" 92 | }, 93 | { 94 | "idiom": "ipad", 95 | "size": "76x76", 96 | "scale": "2x" 97 | }, 98 | { 99 | "size": "24x24", 100 | "idiom": "watch", 101 | "scale": "2x", 102 | "role": "notificationCenter", 103 | "subtype": "38mm" 104 | }, 105 | { 106 | "size": "27.5x27.5", 107 | "idiom": "watch", 108 | "scale": "2x", 109 | "role": "notificationCenter", 110 | "subtype": "42mm" 111 | }, 112 | { 113 | "size": "29x29", 114 | "idiom": "watch", 115 | "role": "companionSettings", 116 | "scale": "2x" 117 | }, 118 | { 119 | "size": "29x29", 120 | "idiom": "watch", 121 | "role": "companionSettings", 122 | "scale": "3x" 123 | }, 124 | { 125 | "size": "40x40", 126 | "idiom": "watch", 127 | "scale": "2x", 128 | "role": "appLauncher", 129 | "subtype": "38mm" 130 | }, 131 | { 132 | "size": "44x44", 133 | "idiom": "watch", 134 | "scale": "2x", 135 | "role": "longLook", 136 | "subtype": "42mm" 137 | }, 138 | { 139 | "size": "86x86", 140 | "idiom": "watch", 141 | "scale": "2x", 142 | "role": "quickLook", 143 | "subtype": "38mm" 144 | }, 145 | { 146 | "size": "98x98", 147 | "idiom": "watch", 148 | "scale": "2x", 149 | "role": "quickLook", 150 | "subtype": "42mm" 151 | } 152 | ], 153 | "info": { 154 | "version": 1, 155 | "author": "xcode" 156 | } 157 | } -------------------------------------------------------------------------------- /WeChat.iOS.Samples/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /WeChat.iOS.Samples/Entitlements.plist: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /WeChat.iOS.Samples/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleShortVersionString 6 | 1.0 7 | CFBundleVersion 8 | 1.0 9 | LSRequiresIPhoneOS 10 | 11 | MinimumOSVersion 12 | 10.2 13 | UIDeviceFamily 14 | 15 | 1 16 | 2 17 | 18 | UILaunchStoryboardName 19 | LaunchScreen 20 | UIMainStoryboardFile 21 | Main 22 | UIRequiredDeviceCapabilities 23 | 24 | armv7 25 | 26 | UISupportedInterfaceOrientations 27 | 28 | UIInterfaceOrientationPortrait 29 | UIInterfaceOrientationPortraitUpsideDown 30 | UIInterfaceOrientationLandscapeLeft 31 | UIInterfaceOrientationLandscapeRight 32 | 33 | XSAppIconAssets 34 | Assets.xcassets/AppIcon.appiconset 35 | CFBundleURLTypes 36 | 37 | 38 | CFBundleURLName 39 | weixin 40 | CFBundleURLTypes 41 | Editor 42 | CFBundleURLSchemes 43 | 44 | your 45 | open 46 | id 47 | 48 | 49 | 50 | CFBundleName 51 | Samples 52 | CFBundleIdentifier 53 | your bundle 54 | 55 | 56 | -------------------------------------------------------------------------------- /WeChat.iOS.Samples/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 |  2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /WeChat.iOS.Samples/Main.cs: -------------------------------------------------------------------------------- 1 | using UIKit; 2 | 3 | namespace WeChat.iOS.Samples 4 | { 5 | public class Application 6 | { 7 | // This is the main entry point of the application. 8 | static void Main(string[] args) 9 | { 10 | // if you want to use a different Application Delegate class from "AppDelegate" 11 | // you can specify it here. 12 | UIApplication.Main(args, null, "AppDelegate"); 13 | } 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /WeChat.iOS.Samples/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /WeChat.iOS.Samples/ViewController.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | using UIKit; 4 | 5 | namespace WeChat.iOS.Samples 6 | { 7 | public partial class ViewController : UIViewController 8 | { 9 | 10 | WeChatAPI we; 11 | 12 | protected ViewController(IntPtr handle) : base(handle) 13 | { 14 | // Note: this .ctor should not contain any initialization logic. 15 | } 16 | 17 | public override void ViewDidLoad() 18 | { 19 | base.ViewDidLoad(); 20 | // Perform any additional setup after loading the view, typically from a nib. 21 | we = new WeChatAPI(); 22 | } 23 | 24 | public override void DidReceiveMemoryWarning() 25 | { 26 | base.DidReceiveMemoryWarning(); 27 | // Release any cached data, images, etc that aren't in use. 28 | } 29 | 30 | partial void UIButton3_TouchUpInside(UIButton sender) 31 | { 32 | we.SendText("Hello Xamarin@WeChat"); 33 | } 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /WeChat.iOS.Samples/ViewController.designer.cs: -------------------------------------------------------------------------------- 1 | // WARNING 2 | // 3 | // This file has been generated automatically by Xamarin Studio from the outlets and 4 | // actions declared in your storyboard file. 5 | // Manual changes to this file will not be maintained. 6 | // 7 | using Foundation; 8 | using System; 9 | using System.CodeDom.Compiler; 10 | 11 | namespace WeChat.iOS.Samples 12 | { 13 | [Register ("ViewController")] 14 | partial class ViewController 15 | { 16 | [Action ("UIButton3_TouchUpInside:")] 17 | [GeneratedCode ("iOS Designer", "1.0")] 18 | partial void UIButton3_TouchUpInside (UIKit.UIButton sender); 19 | 20 | void ReleaseDesignerOutlets () 21 | { 22 | } 23 | } 24 | } -------------------------------------------------------------------------------- /WeChat.iOS.Samples/WeChat.iOS.Samples.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | iPhoneSimulator 6 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8} 7 | {FEACFBD2-3405-455C-9665-78FE426C6842};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 8 | Exe 9 | WeChat.iOS.Samples 10 | WeChat.iOS.Samples 11 | Resources 12 | 13 | 14 | true 15 | full 16 | false 17 | bin\iPhoneSimulator\Debug 18 | DEBUG;ENABLE_TEST_CLOUD; 19 | prompt 20 | 4 21 | iPhone Developer 22 | true 23 | true 24 | true 25 | true 26 | true 27 | true 28 | 25005 29 | None 30 | i386, x86_64 31 | HttpClientHandler 32 | 33 | 34 | pdbonly 35 | true 36 | bin\iPhone\Release 37 | 38 | prompt 39 | 4 40 | iPhone Developer 41 | true 42 | true 43 | true 44 | Entitlements.plist 45 | SdkOnly 46 | ARMv7, ARM64 47 | HttpClientHandler 48 | 49 | 50 | pdbonly 51 | true 52 | bin\iPhoneSimulator\Release 53 | 54 | prompt 55 | 4 56 | iPhone Developer 57 | true 58 | true 59 | true 60 | None 61 | i386, x86_64 62 | HttpClientHandler 63 | 64 | 65 | true 66 | full 67 | false 68 | bin\iPhone\Debug 69 | DEBUG;ENABLE_TEST_CLOUD; 70 | prompt 71 | 4 72 | iPhone Developer 73 | true 74 | true 75 | true 76 | true 77 | true 78 | true 79 | true 80 | Entitlements.plist 81 | SdkOnly 82 | ARMv7, ARM64 83 | HttpClientHandler 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | ViewController.cs 112 | 113 | 114 | 115 | 116 | 117 | {C7B500C0-28FC-432F-93E8-C391BC182BA5} 118 | WeChat.iOS 119 | 120 | 121 | 122 | -------------------------------------------------------------------------------- /WeChat.iOS.Samples/WeChatAPI.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | using Foundation; 3 | using WeChat.iOS; 4 | 5 | namespace WeChat.iOS.Samples 6 | { 7 | public class WeChatAPI: WXApiDelegate 8 | { 9 | //微信登录 10 | public bool Log(string appID) 11 | { 12 | var result = WXApi.RegisterApp(appID); 13 | return result; 14 | } 15 | //微信链接打开 16 | public bool Open(NSUrl url) 17 | { 18 | var result = WXApi.HandleOpenURL(url, this); 19 | return result; 20 | } 21 | //请求打开微信 22 | public override void OnReq(BaseReq req) 23 | { 24 | 25 | } 26 | //响应微信 27 | public override void OnResp(BaseResp resp) 28 | { 29 | 30 | } 31 | 32 | //发送信息到朋友圈 33 | public bool SendText(string text) 34 | { 35 | SendMessageToWXReq req = new SendMessageToWXReq(); 36 | req.Text = text; 37 | req.BText = true; 38 | req.Scene = 1; 39 | WXApi.SendReq(req); 40 | 41 | return true; 42 | } 43 | 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /WeChat.iOS/ApiDefinition.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | using UIKit; 4 | using Foundation; 5 | using ObjCRuntime; 6 | using CoreGraphics; 7 | 8 | namespace WeChat.iOS 9 | { 10 | // @protocol WechatAuthAPIDelegate 11 | [Protocol, Model] 12 | [BaseType(typeof(NSObject))] 13 | interface WechatAuthAPIDelegate 14 | { 15 | // @optional -(void)onAuthGotQrcode:(UIImage *)image; 16 | [Export("onAuthGotQrcode:")] 17 | void OnAuthGotQrcode(UIImage image); 18 | 19 | // @optional -(void)onQrcodeScanned; 20 | [Export("onQrcodeScanned")] 21 | void OnQrcodeScanned(); 22 | 23 | // @optional -(void)onAuthFinish:(int)errCode AuthCode:(NSString *)authCode; 24 | [Export("onAuthFinish:AuthCode:")] 25 | void OnAuthFinish(int errCode, string authCode); 26 | } 27 | 28 | // @interface WechatAuthSDK : NSObject 29 | [BaseType(typeof(NSObject))] 30 | interface WechatAuthSDK 31 | { 32 | [Wrap("WeakDelegate")] 33 | WechatAuthAPIDelegate Delegate { get; set; } 34 | 35 | // @property (nonatomic, weak) id delegate; 36 | [NullAllowed, Export("delegate", ArgumentSemantic.Weak)] 37 | NSObject WeakDelegate { get; set; } 38 | 39 | // @property (readonly, nonatomic) NSString * sdkVersion; 40 | [Export("sdkVersion")] 41 | string SdkVersion { get; } 42 | 43 | // -(BOOL)Auth:(NSString *)appId nonceStr:(NSString *)nonceStr timeStamp:(NSString *)timeStamp scope:(NSString *)scope signature:(NSString *)signature schemeData:(NSString *)schemeData; 44 | [Export("Auth:nonceStr:timeStamp:scope:signature:schemeData:")] 45 | bool Auth(string appId, string nonceStr, string timeStamp, string scope, string signature, string schemeData); 46 | 47 | // -(BOOL)StopAuth; 48 | [Export("StopAuth")] 49 | //[Verify(MethodToProperty)] 50 | bool StopAuth { get; } 51 | } 52 | 53 | // @interface BaseReq : NSObject 54 | [BaseType(typeof(NSObject))] 55 | interface BaseReq 56 | { 57 | // @property (assign, nonatomic) int type; 58 | [Export("type")] 59 | int Type { get; set; } 60 | 61 | // @property (retain, nonatomic) NSString * openID; 62 | [Export("openID", ArgumentSemantic.Retain)] 63 | string OpenID { get; set; } 64 | } 65 | 66 | // @interface BaseResp : NSObject 67 | [BaseType(typeof(NSObject))] 68 | interface BaseResp 69 | { 70 | // @property (assign, nonatomic) int errCode; 71 | [Export("errCode")] 72 | int ErrCode { get; set; } 73 | 74 | // @property (retain, nonatomic) NSString * errStr; 75 | [Export("errStr", ArgumentSemantic.Retain)] 76 | string ErrStr { get; set; } 77 | 78 | // @property (assign, nonatomic) int type; 79 | [Export("type")] 80 | int Type { get; set; } 81 | } 82 | 83 | // @interface PayReq : BaseReq 84 | [BaseType(typeof(BaseReq))] 85 | interface PayReq 86 | { 87 | // @property (retain, nonatomic) NSString * partnerId; 88 | [Export("partnerId", ArgumentSemantic.Retain)] 89 | string PartnerId { get; set; } 90 | 91 | // @property (retain, nonatomic) NSString * prepayId; 92 | [Export("prepayId", ArgumentSemantic.Retain)] 93 | string PrepayId { get; set; } 94 | 95 | // @property (retain, nonatomic) NSString * nonceStr; 96 | [Export("nonceStr", ArgumentSemantic.Retain)] 97 | string NonceStr { get; set; } 98 | 99 | // @property (assign, nonatomic) UInt32 timeStamp; 100 | [Export("timeStamp")] 101 | uint TimeStamp { get; set; } 102 | 103 | // @property (retain, nonatomic) NSString * package; 104 | [Export("package", ArgumentSemantic.Retain)] 105 | string Package { get; set; } 106 | 107 | // @property (retain, nonatomic) NSString * sign; 108 | [Export("sign", ArgumentSemantic.Retain)] 109 | string Sign { get; set; } 110 | } 111 | 112 | // @interface PayResp : BaseResp 113 | [BaseType(typeof(BaseResp))] 114 | interface PayResp 115 | { 116 | // @property (retain, nonatomic) NSString * returnKey; 117 | [Export("returnKey", ArgumentSemantic.Retain)] 118 | string ReturnKey { get; set; } 119 | } 120 | 121 | // @interface HBReq : BaseReq 122 | [BaseType(typeof(BaseReq))] 123 | interface HBReq 124 | { 125 | // @property (retain, nonatomic) NSString * nonceStr; 126 | [Export("nonceStr", ArgumentSemantic.Retain)] 127 | string NonceStr { get; set; } 128 | 129 | // @property (assign, nonatomic) UInt32 timeStamp; 130 | [Export("timeStamp")] 131 | uint TimeStamp { get; set; } 132 | 133 | // @property (retain, nonatomic) NSString * package; 134 | [Export("package", ArgumentSemantic.Retain)] 135 | string Package { get; set; } 136 | 137 | // @property (retain, nonatomic) NSString * sign; 138 | [Export("sign", ArgumentSemantic.Retain)] 139 | string Sign { get; set; } 140 | } 141 | 142 | // @interface HBResp : BaseResp 143 | [BaseType(typeof(BaseResp))] 144 | interface HBResp 145 | { 146 | } 147 | 148 | // @interface SendAuthReq : BaseReq 149 | [BaseType(typeof(BaseReq))] 150 | interface SendAuthReq 151 | { 152 | // @property (retain, nonatomic) NSString * scope; 153 | [Export("scope", ArgumentSemantic.Retain)] 154 | string Scope { get; set; } 155 | 156 | // @property (retain, nonatomic) NSString * state; 157 | [Export("state", ArgumentSemantic.Retain)] 158 | string State { get; set; } 159 | } 160 | 161 | // @interface SendAuthResp : BaseResp 162 | [BaseType(typeof(BaseResp))] 163 | interface SendAuthResp 164 | { 165 | // @property (retain, nonatomic) NSString * code; 166 | [Export("code", ArgumentSemantic.Retain)] 167 | string Code { get; set; } 168 | 169 | // @property (retain, nonatomic) NSString * state; 170 | [Export("state", ArgumentSemantic.Retain)] 171 | string State { get; set; } 172 | 173 | // @property (retain, nonatomic) NSString * lang; 174 | [Export("lang", ArgumentSemantic.Retain)] 175 | string Lang { get; set; } 176 | 177 | // @property (retain, nonatomic) NSString * country; 178 | [Export("country", ArgumentSemantic.Retain)] 179 | string Country { get; set; } 180 | } 181 | 182 | // @interface SendMessageToWXReq : BaseReq 183 | [BaseType(typeof(BaseReq))] 184 | interface SendMessageToWXReq 185 | { 186 | // @property (retain, nonatomic) NSString * text; 187 | [Export("text", ArgumentSemantic.Retain)] 188 | string Text { get; set; } 189 | 190 | // @property (retain, nonatomic) WXMediaMessage * message; 191 | [Export("message", ArgumentSemantic.Retain)] 192 | WXMediaMessage Message { get; set; } 193 | 194 | // @property (assign, nonatomic) BOOL bText; 195 | [Export("bText")] 196 | bool BText { get; set; } 197 | 198 | // @property (assign, nonatomic) int scene; 199 | [Export("scene")] 200 | int Scene { get; set; } 201 | } 202 | 203 | // @interface SendMessageToWXResp : BaseResp 204 | [BaseType(typeof(BaseResp))] 205 | interface SendMessageToWXResp 206 | { 207 | // @property (retain, nonatomic) NSString * lang; 208 | [Export("lang", ArgumentSemantic.Retain)] 209 | string Lang { get; set; } 210 | 211 | // @property (retain, nonatomic) NSString * country; 212 | [Export("country", ArgumentSemantic.Retain)] 213 | string Country { get; set; } 214 | } 215 | 216 | // @interface GetMessageFromWXReq : BaseReq 217 | [BaseType(typeof(BaseReq))] 218 | interface GetMessageFromWXReq 219 | { 220 | // @property (retain, nonatomic) NSString * lang; 221 | [Export("lang", ArgumentSemantic.Retain)] 222 | string Lang { get; set; } 223 | 224 | // @property (retain, nonatomic) NSString * country; 225 | [Export("country", ArgumentSemantic.Retain)] 226 | string Country { get; set; } 227 | } 228 | 229 | // @interface GetMessageFromWXResp : BaseResp 230 | [BaseType(typeof(BaseResp))] 231 | interface GetMessageFromWXResp 232 | { 233 | // @property (retain, nonatomic) NSString * text; 234 | [Export("text", ArgumentSemantic.Retain)] 235 | string Text { get; set; } 236 | 237 | // @property (retain, nonatomic) WXMediaMessage * message; 238 | [Export("message", ArgumentSemantic.Retain)] 239 | WXMediaMessage Message { get; set; } 240 | 241 | // @property (assign, nonatomic) BOOL bText; 242 | [Export("bText")] 243 | bool BText { get; set; } 244 | } 245 | 246 | // @interface ShowMessageFromWXReq : BaseReq 247 | [BaseType(typeof(BaseReq))] 248 | interface ShowMessageFromWXReq 249 | { 250 | // @property (retain, nonatomic) WXMediaMessage * message; 251 | [Export("message", ArgumentSemantic.Retain)] 252 | WXMediaMessage Message { get; set; } 253 | 254 | // @property (retain, nonatomic) NSString * lang; 255 | [Export("lang", ArgumentSemantic.Retain)] 256 | string Lang { get; set; } 257 | 258 | // @property (retain, nonatomic) NSString * country; 259 | [Export("country", ArgumentSemantic.Retain)] 260 | string Country { get; set; } 261 | } 262 | 263 | // @interface ShowMessageFromWXResp : BaseResp 264 | [BaseType(typeof(BaseResp))] 265 | interface ShowMessageFromWXResp 266 | { 267 | } 268 | 269 | // @interface LaunchFromWXReq : BaseReq 270 | [BaseType(typeof(BaseReq))] 271 | interface LaunchFromWXReq 272 | { 273 | // @property (retain, nonatomic) WXMediaMessage * message; 274 | [Export("message", ArgumentSemantic.Retain)] 275 | WXMediaMessage Message { get; set; } 276 | 277 | // @property (retain, nonatomic) NSString * lang; 278 | [Export("lang", ArgumentSemantic.Retain)] 279 | string Lang { get; set; } 280 | 281 | // @property (retain, nonatomic) NSString * country; 282 | [Export("country", ArgumentSemantic.Retain)] 283 | string Country { get; set; } 284 | } 285 | 286 | // @interface OpenTempSessionReq : BaseReq 287 | [BaseType(typeof(BaseReq))] 288 | interface OpenTempSessionReq 289 | { 290 | // @property (retain, nonatomic) NSString * username; 291 | [Export("username", ArgumentSemantic.Retain)] 292 | string Username { get; set; } 293 | 294 | // @property (retain, nonatomic) NSString * sessionFrom; 295 | [Export("sessionFrom", ArgumentSemantic.Retain)] 296 | string SessionFrom { get; set; } 297 | } 298 | 299 | // @interface OpenWebviewReq : BaseReq 300 | [BaseType(typeof(BaseReq))] 301 | interface OpenWebviewReq 302 | { 303 | // @property (retain, nonatomic) NSString * url; 304 | [Export("url", ArgumentSemantic.Retain)] 305 | string Url { get; set; } 306 | } 307 | 308 | // @interface OpenWebviewResp : BaseResp 309 | [BaseType(typeof(BaseResp))] 310 | interface OpenWebviewResp 311 | { 312 | } 313 | 314 | // @interface OpenTempSessionResp : BaseResp 315 | [BaseType(typeof(BaseResp))] 316 | interface OpenTempSessionResp 317 | { 318 | } 319 | 320 | // @interface OpenRankListReq : BaseReq 321 | [BaseType(typeof(BaseReq))] 322 | interface OpenRankListReq 323 | { 324 | } 325 | 326 | // @interface OpenRankListResp : BaseResp 327 | [BaseType(typeof(BaseResp))] 328 | interface OpenRankListResp 329 | { 330 | } 331 | 332 | // @interface JumpToBizProfileReq : BaseReq 333 | [BaseType(typeof(BaseReq))] 334 | interface JumpToBizProfileReq 335 | { 336 | // @property (retain, nonatomic) NSString * username; 337 | [Export("username", ArgumentSemantic.Retain)] 338 | string Username { get; set; } 339 | 340 | // @property (retain, nonatomic) NSString * extMsg; 341 | [Export("extMsg", ArgumentSemantic.Retain)] 342 | string ExtMsg { get; set; } 343 | 344 | // @property (assign, nonatomic) int profileType; 345 | [Export("profileType")] 346 | int ProfileType { get; set; } 347 | } 348 | 349 | // @interface JumpToBizWebviewReq : BaseReq 350 | [BaseType(typeof(BaseReq))] 351 | interface JumpToBizWebviewReq 352 | { 353 | // @property (assign, nonatomic) int webType; 354 | [Export("webType")] 355 | int WebType { get; set; } 356 | 357 | // @property (retain, nonatomic) NSString * tousrname; 358 | [Export("tousrname", ArgumentSemantic.Retain)] 359 | string Tousrname { get; set; } 360 | 361 | // @property (retain, nonatomic) NSString * extMsg; 362 | [Export("extMsg", ArgumentSemantic.Retain)] 363 | string ExtMsg { get; set; } 364 | } 365 | 366 | // @interface WXCardItem : NSObject 367 | [BaseType(typeof(NSObject))] 368 | interface WXCardItem 369 | { 370 | // @property (retain, nonatomic) NSString * cardId; 371 | [Export("cardId", ArgumentSemantic.Retain)] 372 | string CardId { get; set; } 373 | 374 | // @property (retain, nonatomic) NSString * extMsg; 375 | [Export("extMsg", ArgumentSemantic.Retain)] 376 | string ExtMsg { get; set; } 377 | 378 | // @property (assign, nonatomic) UInt32 cardState; 379 | [Export("cardState")] 380 | uint CardState { get; set; } 381 | 382 | // @property (retain, nonatomic) NSString * encryptCode; 383 | [Export("encryptCode", ArgumentSemantic.Retain)] 384 | string EncryptCode { get; set; } 385 | 386 | // @property (retain, nonatomic) NSString * appID; 387 | [Export("appID", ArgumentSemantic.Retain)] 388 | string AppID { get; set; } 389 | } 390 | 391 | // @interface AddCardToWXCardPackageReq : BaseReq 392 | [BaseType(typeof(BaseReq))] 393 | interface AddCardToWXCardPackageReq 394 | { 395 | // @property (retain, nonatomic) NSArray * cardAry; 396 | [Export("cardAry", ArgumentSemantic.Retain)] 397 | //[Verify(StronglyTypedNSArray)] 398 | NSObject[] CardAry { get; set; } 399 | } 400 | 401 | // @interface AddCardToWXCardPackageResp : BaseResp 402 | [BaseType(typeof(BaseResp))] 403 | interface AddCardToWXCardPackageResp 404 | { 405 | // @property (retain, nonatomic) NSArray * cardAry; 406 | [Export("cardAry", ArgumentSemantic.Retain)] 407 | //[Verify(StronglyTypedNSArray)] 408 | NSObject[] CardAry { get; set; } 409 | } 410 | 411 | // @interface WXChooseCardReq : BaseReq 412 | [BaseType(typeof(BaseReq))] 413 | interface WXChooseCardReq 414 | { 415 | // @property (nonatomic, strong) NSString * appID; 416 | [Export("appID", ArgumentSemantic.Strong)] 417 | string AppID { get; set; } 418 | 419 | // @property (assign, nonatomic) UInt32 shopID; 420 | [Export("shopID")] 421 | uint ShopID { get; set; } 422 | 423 | // @property (assign, nonatomic) UInt32 canMultiSelect; 424 | [Export("canMultiSelect")] 425 | uint CanMultiSelect { get; set; } 426 | 427 | // @property (nonatomic, strong) NSString * cardType; 428 | [Export("cardType", ArgumentSemantic.Strong)] 429 | string CardType { get; set; } 430 | 431 | // @property (nonatomic, strong) NSString * cardTpID; 432 | [Export("cardTpID", ArgumentSemantic.Strong)] 433 | string CardTpID { get; set; } 434 | 435 | // @property (nonatomic, strong) NSString * signType; 436 | [Export("signType", ArgumentSemantic.Strong)] 437 | string SignType { get; set; } 438 | 439 | // @property (nonatomic, strong) NSString * cardSign; 440 | [Export("cardSign", ArgumentSemantic.Strong)] 441 | string CardSign { get; set; } 442 | 443 | // @property (assign, nonatomic) UInt32 timeStamp; 444 | [Export("timeStamp")] 445 | uint TimeStamp { get; set; } 446 | 447 | // @property (nonatomic, strong) NSString * nonceStr; 448 | [Export("nonceStr", ArgumentSemantic.Strong)] 449 | string NonceStr { get; set; } 450 | } 451 | 452 | // @interface WXChooseCardResp : BaseResp 453 | [BaseType(typeof(BaseResp))] 454 | interface WXChooseCardResp 455 | { 456 | // @property (retain, nonatomic) NSArray * cardAry; 457 | [Export("cardAry", ArgumentSemantic.Retain)] 458 | //[Verify(StronglyTypedNSArray)] 459 | NSObject[] CardAry { get; set; } 460 | } 461 | 462 | // @interface WXMediaMessage : NSObject 463 | [BaseType(typeof(NSObject))] 464 | interface WXMediaMessage 465 | { 466 | // +(WXMediaMessage *)message; 467 | [Static] 468 | [Export("message")] 469 | //[Verify(MethodToProperty)] 470 | WXMediaMessage Message { get; } 471 | 472 | // @property (retain, nonatomic) NSString * title; 473 | [Export("title", ArgumentSemantic.Retain)] 474 | string Title { get; set; } 475 | 476 | // @property (retain, nonatomic) NSString * description; 477 | [Export("description", ArgumentSemantic.Retain)] 478 | string Description { get; set; } 479 | 480 | // @property (retain, nonatomic) NSData * thumbData; 481 | [Export("thumbData", ArgumentSemantic.Retain)] 482 | NSData ThumbData { get; set; } 483 | 484 | // @property (retain, nonatomic) NSString * mediaTagName; 485 | [Export("mediaTagName", ArgumentSemantic.Retain)] 486 | string MediaTagName { get; set; } 487 | 488 | // @property (retain, nonatomic) NSString * messageExt; 489 | [Export("messageExt", ArgumentSemantic.Retain)] 490 | string MessageExt { get; set; } 491 | 492 | // @property (retain, nonatomic) NSString * messageAction; 493 | [Export("messageAction", ArgumentSemantic.Retain)] 494 | string MessageAction { get; set; } 495 | 496 | // @property (retain, nonatomic) id mediaObject; 497 | [Export("mediaObject", ArgumentSemantic.Retain)] 498 | NSObject MediaObject { get; set; } 499 | 500 | // -(void)setThumbImage:(UIImage *)image; 501 | [Export("setThumbImage:")] 502 | void SetThumbImage(UIImage image); 503 | } 504 | 505 | // @interface WXImageObject : NSObject 506 | [BaseType(typeof(NSObject))] 507 | interface WXImageObject 508 | { 509 | // +(WXImageObject *)object; 510 | [Static] 511 | [Export("object")] 512 | //[Verify(MethodToProperty)] 513 | WXImageObject Object { get; } 514 | 515 | // @property (retain, nonatomic) NSData * imageData; 516 | [Export("imageData", ArgumentSemantic.Retain)] 517 | NSData ImageData { get; set; } 518 | } 519 | 520 | // @interface WXMusicObject : NSObject 521 | [BaseType(typeof(NSObject))] 522 | interface WXMusicObject 523 | { 524 | // +(WXMusicObject *)object; 525 | [Static] 526 | [Export("object")] 527 | //[Verify(MethodToProperty)] 528 | WXMusicObject Object { get; } 529 | 530 | // @property (retain, nonatomic) NSString * musicUrl; 531 | [Export("musicUrl", ArgumentSemantic.Retain)] 532 | string MusicUrl { get; set; } 533 | 534 | // @property (retain, nonatomic) NSString * musicLowBandUrl; 535 | [Export("musicLowBandUrl", ArgumentSemantic.Retain)] 536 | string MusicLowBandUrl { get; set; } 537 | 538 | // @property (retain, nonatomic) NSString * musicDataUrl; 539 | [Export("musicDataUrl", ArgumentSemantic.Retain)] 540 | string MusicDataUrl { get; set; } 541 | 542 | // @property (retain, nonatomic) NSString * musicLowBandDataUrl; 543 | [Export("musicLowBandDataUrl", ArgumentSemantic.Retain)] 544 | string MusicLowBandDataUrl { get; set; } 545 | } 546 | 547 | // @interface WXVideoObject : NSObject 548 | [BaseType(typeof(NSObject))] 549 | interface WXVideoObject 550 | { 551 | // +(WXVideoObject *)object; 552 | [Static] 553 | [Export("object")] 554 | //[Verify(MethodToProperty)] 555 | WXVideoObject Object { get; } 556 | 557 | // @property (retain, nonatomic) NSString * videoUrl; 558 | [Export("videoUrl", ArgumentSemantic.Retain)] 559 | string VideoUrl { get; set; } 560 | 561 | // @property (retain, nonatomic) NSString * videoLowBandUrl; 562 | [Export("videoLowBandUrl", ArgumentSemantic.Retain)] 563 | string VideoLowBandUrl { get; set; } 564 | } 565 | 566 | // @interface WXWebpageObject : NSObject 567 | [BaseType(typeof(NSObject))] 568 | interface WXWebpageObject 569 | { 570 | // +(WXWebpageObject *)object; 571 | [Static] 572 | [Export("object")] 573 | //[Verify(MethodToProperty)] 574 | WXWebpageObject Object { get; } 575 | 576 | // @property (retain, nonatomic) NSString * webpageUrl; 577 | [Export("webpageUrl", ArgumentSemantic.Retain)] 578 | string WebpageUrl { get; set; } 579 | } 580 | 581 | // @interface WXAppExtendObject : NSObject 582 | [BaseType(typeof(NSObject))] 583 | interface WXAppExtendObject 584 | { 585 | // +(WXAppExtendObject *)object; 586 | [Static] 587 | [Export("object")] 588 | //[Verify(MethodToProperty)] 589 | WXAppExtendObject Object { get; } 590 | 591 | // @property (retain, nonatomic) NSString * url; 592 | [Export("url", ArgumentSemantic.Retain)] 593 | string Url { get; set; } 594 | 595 | // @property (retain, nonatomic) NSString * extInfo; 596 | [Export("extInfo", ArgumentSemantic.Retain)] 597 | string ExtInfo { get; set; } 598 | 599 | // @property (retain, nonatomic) NSData * fileData; 600 | [Export("fileData", ArgumentSemantic.Retain)] 601 | NSData FileData { get; set; } 602 | } 603 | 604 | // @interface WXEmoticonObject : NSObject 605 | [BaseType(typeof(NSObject))] 606 | interface WXEmoticonObject 607 | { 608 | // +(WXEmoticonObject *)object; 609 | [Static] 610 | [Export("object")] 611 | //[Verify(MethodToProperty)] 612 | WXEmoticonObject Object { get; } 613 | 614 | // @property (retain, nonatomic) NSData * emoticonData; 615 | [Export("emoticonData", ArgumentSemantic.Retain)] 616 | NSData EmoticonData { get; set; } 617 | } 618 | 619 | // @interface WXFileObject : NSObject 620 | [BaseType(typeof(NSObject))] 621 | interface WXFileObject 622 | { 623 | // +(WXFileObject *)object; 624 | [Static] 625 | [Export("object")] 626 | //[Verify(MethodToProperty)] 627 | WXFileObject Object { get; } 628 | 629 | // @property (retain, nonatomic) NSString * fileExtension; 630 | [Export("fileExtension", ArgumentSemantic.Retain)] 631 | string FileExtension { get; set; } 632 | 633 | // @property (retain, nonatomic) NSData * fileData; 634 | [Export("fileData", ArgumentSemantic.Retain)] 635 | NSData FileData { get; set; } 636 | } 637 | 638 | // @interface WXLocationObject : NSObject 639 | [BaseType(typeof(NSObject))] 640 | interface WXLocationObject 641 | { 642 | // +(WXLocationObject *)object; 643 | [Static] 644 | [Export("object")] 645 | //[Verify(MethodToProperty)] 646 | WXLocationObject Object { get; } 647 | 648 | // @property (assign, nonatomic) double lng; 649 | [Export("lng")] 650 | double Lng { get; set; } 651 | 652 | // @property (assign, nonatomic) double lat; 653 | [Export("lat")] 654 | double Lat { get; set; } 655 | } 656 | 657 | // @interface WXTextObject : NSObject 658 | [BaseType(typeof(NSObject))] 659 | interface WXTextObject 660 | { 661 | // +(WXTextObject *)object; 662 | [Static] 663 | [Export("object")] 664 | //[Verify(MethodToProperty)] 665 | WXTextObject Object { get; } 666 | 667 | // @property (retain, nonatomic) NSString * contentText; 668 | [Export("contentText", ArgumentSemantic.Retain)] 669 | string ContentText { get; set; } 670 | } 671 | 672 | // @protocol WXApiDelegate 673 | [Protocol, Model] 674 | [BaseType(typeof(NSObject))] 675 | interface WXApiDelegate 676 | { 677 | // @optional -(void)onReq:(BaseReq *)req; 678 | [Export("onReq:")] 679 | void OnReq(BaseReq req); 680 | 681 | // @optional -(void)onResp:(BaseResp *)resp; 682 | [Export("onResp:")] 683 | void OnResp(BaseResp resp); 684 | } 685 | 686 | // @interface WXApi : NSObject 687 | [BaseType(typeof(NSObject))] 688 | interface WXApi 689 | { 690 | // +(BOOL)registerApp:(NSString *)appid; 691 | [Static] 692 | [Export("registerApp:")] 693 | bool RegisterApp(string appid); 694 | 695 | // +(BOOL)registerApp:(NSString *)appid enableMTA:(BOOL)isEnableMTA; 696 | [Static] 697 | [Export("registerApp:enableMTA:")] 698 | bool RegisterApp(string appid, bool isEnableMTA); 699 | 700 | // +(void)registerAppSupportContentFlag:(UInt64)typeFlag; 701 | [Static] 702 | [Export("registerAppSupportContentFlag:")] 703 | void RegisterAppSupportContentFlag(ulong typeFlag); 704 | 705 | // +(BOOL)handleOpenURL:(NSURL *)url delegate:(id)delegate; 706 | [Static] 707 | [Export("handleOpenURL:delegate:")] 708 | bool HandleOpenURL(NSUrl url, WXApiDelegate @delegate); 709 | 710 | // +(BOOL)isWXAppInstalled; 711 | [Static] 712 | [Export("isWXAppInstalled")] 713 | //[Verify(MethodToProperty)] 714 | bool IsWXAppInstalled { get; } 715 | 716 | // +(BOOL)isWXAppSupportApi; 717 | [Static] 718 | [Export("isWXAppSupportApi")] 719 | //[Verify(MethodToProperty)] 720 | bool IsWXAppSupportApi { get; } 721 | 722 | // +(NSString *)getWXAppInstallUrl; 723 | [Static] 724 | [Export("getWXAppInstallUrl")] 725 | //[Verify(MethodToProperty)] 726 | string WXAppInstallUrl { get; } 727 | 728 | // +(NSString *)getApiVersion; 729 | [Static] 730 | [Export("getApiVersion")] 731 | //[Verify(MethodToProperty)] 732 | string ApiVersion { get; } 733 | 734 | // +(BOOL)openWXApp; 735 | [Static] 736 | [Export("openWXApp")] 737 | //[Verify(MethodToProperty)] 738 | bool OpenWXApp { get; } 739 | 740 | // +(BOOL)sendReq:(BaseReq *)req; 741 | [Static] 742 | [Export("sendReq:")] 743 | bool SendReq(BaseReq req); 744 | 745 | // +(BOOL)sendAuthReq:(SendAuthReq *)req viewController:(UIViewController *)viewController delegate:(id)delegate; 746 | [Static] 747 | [Export("sendAuthReq:viewController:delegate:")] 748 | bool SendAuthReq(SendAuthReq req, UIViewController viewController, WXApiDelegate @delegate); 749 | 750 | // +(BOOL)sendResp:(BaseResp *)resp; 751 | [Static] 752 | [Export("sendResp:")] 753 | bool SendResp(BaseResp resp); 754 | } 755 | } 756 | -------------------------------------------------------------------------------- /WeChat.iOS/Properties/AssemblyInfo.cs: -------------------------------------------------------------------------------- 1 | using System.Reflection; 2 | using System.Runtime.CompilerServices; 3 | 4 | using Foundation; 5 | 6 | // This attribute allows you to mark your assemblies as “safe to link”. 7 | // When the attribute is present, the linker—if enabled—will process the assembly 8 | // even if you’re using the “Link SDK assemblies only” option, which is the default for device builds. 9 | 10 | [assembly: LinkerSafe] 11 | 12 | // Information about this assembly is defined by the following attributes. 13 | // Change them to the values specific to your project. 14 | 15 | [assembly: AssemblyTitle("WeChat.iOS")] 16 | [assembly: AssemblyDescription("")] 17 | [assembly: AssemblyConfiguration("")] 18 | [assembly: AssemblyCompany("")] 19 | [assembly: AssemblyProduct("")] 20 | [assembly: AssemblyCopyright("${AuthorCopyright}")] 21 | [assembly: AssemblyTrademark("")] 22 | [assembly: AssemblyCulture("")] 23 | 24 | // The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}". 25 | // The form "{Major}.{Minor}.*" will automatically update the build and revision, 26 | // and "{Major}.{Minor}.{Build}.*" will update just the revision. 27 | 28 | [assembly: AssemblyVersion("1.0.*")] 29 | 30 | // The following attributes are used to specify the signing key for the assembly, 31 | // if desired. See the Mono documentation for more information about signing. 32 | 33 | //[assembly: AssemblyDelaySign(false)] 34 | //[assembly: AssemblyKeyFile("")] 35 | -------------------------------------------------------------------------------- /WeChat.iOS/Structs.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace WeChat.iOS 4 | { 5 | public enum AuthErrCode 6 | { 7 | Ok = 0, 8 | NormalErr = -1, 9 | NetworkErr = -2, 10 | GetQrcodeFailed = -3, 11 | Cancel = -4, 12 | Timeout = -5 13 | } 14 | 15 | public enum WXErrCode 16 | { 17 | Success = 0, 18 | ErrCodeCommon = -1, 19 | ErrCodeUserCancel = -2, 20 | ErrCodeSentFail = -3, 21 | ErrCodeAuthDeny = -4, 22 | ErrCodeUnsupport = -5 23 | } 24 | 25 | public enum WXScene : uint 26 | { 27 | Session = 0, 28 | Timeline = 1, 29 | Favorite = 2 30 | } 31 | 32 | public enum WXAPISupport : uint 33 | { 34 | WXAPISupportSession = 0 35 | } 36 | 37 | public enum WXBizProfileType : uint 38 | { 39 | Normal = 0, 40 | Device = 1 41 | } 42 | 43 | public enum WXMPWebviewType : uint 44 | { 45 | WXMPWebviewType_Ad = 0 46 | } 47 | 48 | public enum enAppSupportContentFlag : ulong 49 | { 50 | Nocontent = 0, 51 | Text = 1, 52 | Picture = 2, 53 | Location = 4, 54 | Video = 8, 55 | Audio = 16, 56 | Webpage = 32, 57 | Doc = 64, 58 | Docx = 128, 59 | Ppt = 256, 60 | Pptx = 512, 61 | Xls = 1024, 62 | Xlsx = 2048, 63 | Pdf = 4096 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /WeChat.iOS/WeChat.iOS.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Debug 5 | AnyCPU 6 | {C7B500C0-28FC-432F-93E8-C391BC182BA5} 7 | {8FFB629D-F513-41CE-95D2-7ECE97B6EEEC};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 8 | Library 9 | WeChat.iOS 10 | WeChat.iOS 11 | Resources 12 | 13 | 14 | true 15 | full 16 | false 17 | bin\Debug 18 | DEBUG; 19 | prompt 20 | 4 21 | true 22 | 23 | 24 | true 25 | bin\Release 26 | prompt 27 | 4 28 | true 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | Static 46 | True 47 | CFNetwork CoreTelephony Security SystemConfiguration 48 | -ObjC -all_load -lstdc++ -lsqlite3.0 -lz 49 | 50 | 51 | 52 | -------------------------------------------------------------------------------- /WeChatSDK.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio 2012 4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeChat.iOS", "WeChat.iOS\WeChat.iOS.csproj", "{C7B500C0-28FC-432F-93E8-C391BC182BA5}" 5 | EndProject 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WeChat.iOS.Samples", "WeChat.iOS.Samples\WeChat.iOS.Samples.csproj", "{B02E9FBB-C460-496E-96C3-EEE5D659ABE8}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|Any CPU = Debug|Any CPU 11 | Release|Any CPU = Release|Any CPU 12 | Debug|iPhoneSimulator = Debug|iPhoneSimulator 13 | Release|iPhone = Release|iPhone 14 | Release|iPhoneSimulator = Release|iPhoneSimulator 15 | Debug|iPhone = Debug|iPhone 16 | EndGlobalSection 17 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 18 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 19 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Debug|Any CPU.Build.0 = Debug|Any CPU 20 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Release|Any CPU.ActiveCfg = Release|Any CPU 21 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Release|Any CPU.Build.0 = Release|Any CPU 22 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU 23 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU 24 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Release|iPhone.ActiveCfg = Release|Any CPU 25 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Release|iPhone.Build.0 = Release|Any CPU 26 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU 27 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Release|iPhoneSimulator.Build.0 = Release|Any CPU 28 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Debug|iPhone.ActiveCfg = Debug|Any CPU 29 | {C7B500C0-28FC-432F-93E8-C391BC182BA5}.Debug|iPhone.Build.0 = Debug|Any CPU 30 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Debug|Any CPU.ActiveCfg = Debug|iPhoneSimulator 31 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Debug|Any CPU.Build.0 = Debug|iPhoneSimulator 32 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Release|Any CPU.ActiveCfg = Release|iPhone 33 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Release|Any CPU.Build.0 = Release|iPhone 34 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Debug|iPhoneSimulator.ActiveCfg = Debug|iPhoneSimulator 35 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Debug|iPhoneSimulator.Build.0 = Debug|iPhoneSimulator 36 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Release|iPhone.ActiveCfg = Release|iPhone 37 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Release|iPhone.Build.0 = Release|iPhone 38 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Release|iPhoneSimulator.ActiveCfg = Release|iPhoneSimulator 39 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Release|iPhoneSimulator.Build.0 = Release|iPhoneSimulator 40 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Debug|iPhone.ActiveCfg = Debug|iPhone 41 | {B02E9FBB-C460-496E-96C3-EEE5D659ABE8}.Debug|iPhone.Build.0 = Debug|iPhone 42 | EndGlobalSection 43 | EndGlobal 44 | --------------------------------------------------------------------------------