cocos creator接入微信登陆sdk ios篇

cocos creator接入微信登陆sdk ios篇

背景已经在Android篇里面交代过了,有兴趣的朋友可以再看看Android篇
步骤

  1. 去微信开放平台下载ios平台所需要的sdk
  2. 在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id
    cocos creator接入微信登陆sdk ios篇_第1张图片
  3. 在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin
    cocos creator接入微信登陆sdk ios篇_第2张图片
  4. 将SDK文件中包含的 libWeChatSDK.a,WXApi.h,WXApiObject.h 三个文件添加到你所建的工程中,并将libWeChatSDK.a添加到依赖中
    cocos creator接入微信登陆sdk ios篇_第3张图片
    cocos creator接入微信登陆sdk ios篇_第4张图片
    微信开放平台新增了微信模块用户统计功能,便于开发者统计微信功能模块的用户使用和活跃情况。如果需要使用的话开发者需要在工程中链接上:SystemConfiguration.framework, libz.dylib, libsqlite3.0.dylib, libc++.dylib, Security.framework, CoreTelephony.framework, CFNetwork.framework,CoreGraphics.framework
  5. 在你的工程文件中选择Build Setting,在"Other Linker Flags"中加入"-force_load $(PROJECT_DIR)/ios/WeChatSDK1.8.4/libWeChatSDK.a(你的libWeChatSDK的位置)",在Search Paths中添加 libWeChatSDK.a ,WXApi.h,WXApiObject.h,文件所在位置(目录)
    cocos creator接入微信登陆sdk ios篇_第5张图片
  6. 在你需要使用微信终端API的文件中import WXApi.h 头文件,并增加 WXApiDelegate 协议
    cocos creator接入微信登陆sdk ios篇_第6张图片
  7. 以上都添加完成后,开始写代码逻辑
    a) 在主文件中引入WXApi.h,并定义好需要用到的参数code
    cocos creator接入微信登陆sdk ios篇_第7张图片
    b)在didFinishLaunchingWithOptions函数中向微信终端注册你的id
    cocos creator接入微信登陆sdk ios篇_第8张图片
    c) 重写handleOpenURL和openURL方法
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url {
    return  [WXApi handleOpenURL:url delegate:self];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    BOOL isSuc = [WXApi handleOpenURL:url delegate:self];
    NSLog(@"url %@ isSuc %d",url,isSuc == YES ? 1 : 0);
    return  isSuc;
}

d)添加回调方法

-(void) onResp:(BaseResp*)resp{

    if([resp isKindOfClass:[SendAuthResp class]])
    {
        SendAuthResp *aresp = (SendAuthResp *)resp;
        if (aresp.errCode== 0) {
            //_wxCode = aresp.code;
            NSLog(@"resp.Code = %@",aresp.code);
            isGetCode=1;
            wxCode=aresp.code;
            NSLog(@"wxCode = %@",wxCode);
            [self callJsEngineCallBack:@"cc.jsEngineCallback" :wxCode];  //此处的cc.jsEngineCallback是creator里面js定义的全局函数
        }
    }
    
}
//定义参数的返回
-(void)callJsEngineCallBack:(NSString*) funcNameStr :(NSString*) contentStr
{
    NSLog(@"callJsEngineCallBack...");
    
    std::string funcName = [funcNameStr UTF8String];
    std::string param = [contentStr UTF8String];
    std::string jsCallStr = cocos2d::StringUtils::format("%s(\"%s\");",funcName.c_str(), param.c_str());
    NSLog(@"jsCallStr = %s", jsCallStr.c_str());
    ScriptingCore::getInstance()->evalString(jsCallStr.c_str());
}

e)定义触发微信登录的函数

+(void)sendAuthRequest
{
    //构造SendAuthReq结构体
    
    SendAuthReq* req =[[[SendAuthReq alloc ]init ] autorelease ];

    req.scope = @"snsapi_userinfo";

    req.state = @"123" ;

    //第三方向微信终端发送一个SendAuthReq消息结构

    [WXApi sendReq:req];
    //NSLog(@"微信登录 weixin login");
}

ios底层代码写好后,回到js中
首先需要点击登录按钮后拉取微信,需要调用OC代码中定义好的函数
cocos creator接入微信登陆sdk ios篇_第9张图片
微信登录成功后OC中拿到的code需要传到js当中,所以在js里面我们定义一个全局函数
在这里插入图片描述
全局函数中拿到了code,就可以拿去验证登录了,登录验证完成,再去调用一次底层代码清除掉code,这样就不会拿到重复的code了
cocos creator接入微信登陆sdk ios篇_第10张图片
cocos creator接入微信登陆sdk ios篇_第11张图片
微信登录完成!

你可能感兴趣的:(iOS)