步骤 1 下载微信终端SDK文件
SDK文件包括 libWeChatSDK.a,WXApi.h,WXApiObject.h
https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1419319164&lang=zh_CN
步骤 2 添加依赖库
微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和活跃情况。开发者需要在工程中链接上:SystemConfiguration.framework, libz.dylib, libsqlite3.0.dylib, libc++.dylib, Security.framework, CoreTelephony.framework, CFNetwork.framework
步骤 3 在你的工程文件中选择Build Setting,在"Other Linker Flags"中加入"-Objc -all_load",在Search Paths中添加 libWeChatSDK.a ,WXApi.h,WXApiObject.h,文件所在位置(如下图所示)
步骤 4 在Xcode中,选择你的工程设置项,选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id(如下图所示)。
步骤 5 在你需要使 用微信终端API的文件中import WXApi.h 头文件,并增加 WXApiDelegate 协议。
import "WXApi.h"
步骤 6 在代码中使用开发工具包
[1] 要使你的程序启动后微信终端能响应你的程序,必须在代码中向微信终端注册你的id。(如下图所示,在 AppDelegate 的 didFinishLaunchingWithOptions 函数中向微信注册id)。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
//微信注册
[WXApi registerApp:WXAPPID];
return YES;
}
[2] 重写AppDelegate的handleOpenURL和openURL方法:
-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
if ([url.scheme isEqualToString:WXAPPID]){
return [WXApi handleOpenURL:url delegate:self];
}
return YES;
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
if ([url.scheme isEqualToString:WXAPPID]){
return [WXApi handleOpenURL:url delegate:self];
}
return YES;
}
[3] 如果你的程序要发消息给微信,那么需要调用WXApi的sendReq函数
//从服务器请求到的数据
PayReq* req = [[PayReq alloc] init];
req.openID = [[responseObject objectForKey:@"response"] objectForKey:@"appid"]; //应用ID
req.partnerId = [[responseObject objectForKey:@"response"] objectForKey:@"partnerid"]; //商户号
req.prepayId = [[responseObject objectForKey:@"response"] objectForKey:@"prepayid"]; //预支付交易会话ID
req.nonceStr = [[responseObject objectForKey:@"response"] objectForKey:@"noncestr"]; //随机字符串
req.timeStamp = [[[responseObject objectForKey:@"response"] objectForKey:@"timestamp"] intValue]; //时间戳
req.package = [[responseObject objectForKey:@"response"] objectForKey:@"package"]; //扩展字段
req.sign = [[responseObject objectForKey:@"response"] objectForKey:@"sign"]; //签名
[WXApi sendReq:req];
[4]现在,你的程序要实现和微信终端交互的具体请求与回应,因此需要实现WXApiDelegate协议的两个方法:
-(void) onReq:(BaseReq*)req
onReq是微信终端向第三方程序发起请求,要求第三方程序响应。第三方程序响应完后必须调用sendRsp返回。在调用sendRsp返回时,会切回到微信终端程序界面。
-(void) onResp:(BaseResp*)resp
如果第三方程序向微信发送了sendReq的请求,那么onResp会被回调。sendReq请求调用后,会切到微信终端程序界面。