Cocos creator 原生iOS微信SDK操作
(仅用于creator开发,cocos2d-js有细微差别)
第一步 按照微信官方文档导入微信SDK, 建议手动导入,pod 各种报错
第二步 按照微信官方文档设置相关信息
第三步 按照微信官方文档教程初始化微信SDK
第四步 暴露方法给JS,如下:
// 微信登录
- (void)wechatLoginWithAppID:(NSString *)appid;
// 微信分享网页webpage - (void)wechatShareWithAppID:(NSString *)appid
url:(NSString *)url
title:(NSString *)title
content:(NSString *)content
scene:(NSString *)scene;
方法内容参照微信官方文档设置,这里再重复赘述。
第五步 JS调用iOS方法 此处可参照cocos官方文档操作。
第六步 接收回调,参照微信官方文档操作。其中,操作结果需要告知JS,也就是iOS调用JS方法。
引入头文件
#include “cocos/scripting/js-bindings/jswrapper/SeApi.h”
2. 调用JS方法,如下:
NSString* fnStr = [NSString stringWithFormat:@“cc.native.wechatLoginCallBack(”%@")", authResp.code];
[fnStr retain];
// 在cocos线程调用js代码
se::Value *ret = new se::Value();
se::ScriptEngine::getInstance()->evalString([fnStr UTF8String] , -1 , ret);
第七步 js端创建Native.js,代码如下:
var native = cc.native || {}
native.wechatLoginCallBack = null;
native.wechatShareCallBack = null;
/**
-
微信登录
-
@param appid 应用ID
-
@param callback 回调
-
@returns {*|void}
*/
native.wechatLogin = function (appid, callback) {native.wechatLoginCallBack = callback
if (cc.sys.platform == cc.sys.ANDROID) {
return jsb.reflection.callStaticMethod(“com/xuankai6/groupgame/platformSystem/PlatformSystem”, “wechatLoginWithAppID”, “(Ljava/lang/String;)V”, appid);
} else if (cc.sys.os == cc.sys.OS_IOS) {
return jsb.reflection.callStaticMethod(“PlatformSystem”, “wechatLoginWithAppID:”, appid);
}
}
/**
-
分享网页到微信
-
@param appid 应用id
-
@param url 网页链接
-
@param title 标题
-
@param text 分享描述
-
@param wxscene 分享场景 0 分享给朋友 1 分享到朋友圈
-
@param callback 回调
-
@returns {*|void}
*/
native.wechatShare = function (appid, url, title, text, wxscene, callback) {native.wechatShareCallBack = callback
if (wxscene == 0){
wxscene = ‘0’
}else if (wxscene == 1){
wxscene = ‘1’
}if (cc.sys.platform == cc.sys.ANDROID) {
return jsb.reflection.callStaticMethod(“com/xuankai6/groupgame/platformSystem/PlatformSystem”, “wechatShareWithContent”, “(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V”, appid,url,title, text,wxscene);
} else if (cc.sys.os == cc.sys.OS_IOS) {return jsb.reflection.callStaticMethod("PlatformSystem", "wechatShareWithAppID:url:title:content:scene:", appid, url, title, text, wxscene);}
}
cc.native = native
在需要调用的地方直接cc.native. + 方法名称。
交流:
