美文网首页Cocos CreatorCocos
CocosCreator-【微信SDK】IOS平台-IOS微信分

CocosCreator-【微信SDK】IOS平台-IOS微信分

作者: 伏波Rinnsio1xy | 来源:发表于2018-03-27 22:54 被阅读134次

在android平台的微信分享后是ios平台的微信分享,ios分享也不复杂,原理和android 一样,js客户端代码调用oc代码。android和ios的截图分享到朋友圈没有给出来,在参数里多一个类型,需要截图分享到朋友圈的朋友可以参照下微信SDK的文档说明加入参数就可以了。

一、分享后的游戏图标

“share_icon”(这个图片名字代码里用,自己命名的)配置:点击➕add other把share_icon的图片加入资源


二、Object-C的函数头文件:

#import <Foundation/Foundation.h>
#import “WXApi.h”
@interface WXApiManager: NSObject<WXApiDelegate>
ger : NSObject<WXApiDelegate>
{
}
+(instancetype)sharedManager;
+(void)RegisterAppID:(NSString*)app_id;
+(void)SendAuthRequest:(NSString*)scope State:(NSString*)state;
+(BOOL)ShareToChatScene:(NSString*)content_txt;
+(BOOL)ShareToFriendCircle:(NSString*)content_txt;
+(BOOL)ShareLinkToChatScene:(NSString*)content_link Title:(NSString*)title_txt Description:(NSString*)desc_txt;
+(BOOL)ShareLinkToFriendCircle:(NSString*)content_link Title:(NSString*)title_txt Description:(NSString*)desc_txt;
+(BOOL)ShareImageToChatScene:(NSString*)path;
+(BOOL)ShareImageToChatScene:(NSString*)file_path Title:(NSString*)title_txt Description:(NSString*)desc_txt;
+(void)StartPay:(NSString* )partner_id PrepayId:(NSString*)prepay_id NonceStr:(NSString*)nonce_str TimeStamp:(UInt32)timestamp Sign:(NSString*)sign;

+(BOOL)CheckWXInstalled;
+(NSString *) getIPWithHostName:(const NSString *)hostName;
+(UIImage*)scaleToSize:(CGSize)size Target:(UIImage*)target_img;
@end

三、JS调用OC

jsb.reflection.callStaticMethod(“oc类”, “函数名”, “参数”)

四、IOS分享链接给好友

JS代码:

    // 分享到好友聊天
    // @share_link 分享链接
    // @title 标题
    // @desc 分享内容
    ShareToFriend:function(share_link, title, desc){
        this.Log(“ShareToFriend”)
        if(cc.sys.isNative && cc.sys.os == cc.sys.OS_IOS){
            jsb.reflection.callStaticMethod(IOS_CLASS_NAME,"ShareLinkToChatScene:Title:Description:", share_link, title, desc)
        } else if(cc.sys.isNative && cc.sys.os == cc.sys.OS_ANDROID) {
            var _type = 1 // 1:聊天分享  2:朋友圈分享
            var _methond_name = “ShareLinkToWeChat”
            var _methond_singnature = "(" + JAVA_STRING + JAVA_STRING + JAVA_STRING  +"I)Z”
            jsb.reflection.callStaticMethod(ANDROID_CLASS_NAME, _methond_name, _methond_singnature, share_link, title, desc, _type)
        }       
    },

OC代码:


+(BOOL)ShareLinkToChatScene:(NSString*)content_link Title:(NSString*)title_txt Description:(NSString*)desc_txt
{
    WXWebpageObject *ext = [WXWebpageObject object];
    ext.webpageUrl = content_link;
    UIImage *thumbImage = [UIImage imageNamed:@"share_icon.png”];
    
    WXMediaMessage *message = [WXMediaMessage message];
    message.title = title_txt;
    message.description = desc_txt;
    message.mediaObject = ext;
    message.messageExt = nil;
    message.messageAction = nil;
    message.mediaTagName = @“WECHAT_TAG_SHARELINK_CS”;
    [message setThumbImage:thumbImage];
    
    SendMessageToWXReq *req = [[[SendMessageToWXReq alloc] init] autorelease];
    req.bText = false;
    req.scene = WXScene::WXSceneSession;
    req.message = message;
    //curShareType = 1701;
    return [WXApi sendReq:req];
    
}

五、IOS分享链接到朋友圈

JS代码:

    // 分享到朋友圈
    // @share_link 分享链接
    // @title 标题
    // @desc 分享内容
    ShareToFriendCircle:function(share_link, title, desc){
        this.Log(“ShareToFriendCircle”)
        if(cc.sys.isNative && cc.sys.os == cc.sys.OS_IOS){
            jsb.reflection.callStaticMethod(IOS_CLASS_NAME,"ShareLinkToFriendCircle:Title:Description:", share_link, title, desc)
        } else if(cc.sys.isNative && cc.sys.os == cc.sys.OS_ANDROID) {
            var _type = 2 // 1:聊天分享  2:朋友圈分享
            var _methond_name = “ShareLinkToWeChat”
            var _methond_singnature = "(" + JAVA_STRING + JAVA_STRING + JAVA_STRING  +"I)Z”
            jsb.reflection.callStaticMethod(ANDROID_CLASS_NAME, _methond_name, _methond_singnature, share_link, title, desc, _type)
        } 
    },

OC代码:

+(BOOL)ShareLinkToFriendCircle:(NSString*)content_link Title:(NSString*)title_txt Description:(NSString*)desc_txt
{
    WXWebpageObject *ext = [WXWebpageObject object];
    ext.webpageUrl = content_link;
    UIImage *thumbImage = [UIImage imageNamed:@"share_icon.png”];
    
    WXMediaMessage *message = [WXMediaMessage message];
    message.title = title_txt;
    message.description = desc_txt;
    message.mediaObject = ext;
    message.messageExt = nil;
    message.messageAction = nil;
    message.mediaTagName = @“WECHAT_TAG_SHARELINK_FC”;
    [message setThumbImage:thumbImage];
    
    SendMessageToWXReq *req = [[[SendMessageToWXReq alloc] init] autorelease];
    req.bText = false;
    req.scene = WXScene::WXSceneTimeline;
    req.message = message;
    //curShareType = 1702;
    return [WXApi sendReq:req];
}

六、IOS分享文字内容给好友

JS代码:


    // 微信文字内容分享
    // @text 分析内容
    ShareTextTotFriends:function(text){
        if(cc.sys.isNative && cc.sys.os == cc.sys.OS_IOS){
            jsb.reflection.callStaticMethod(IOS_CLASS_NAME,"ShareToChatScene:", text)
        } else if(cc.sys.isNative && cc.sys.os == cc.sys.OS_ANDROID) {
            var _type = 1
            var _methond_name = “ShareToWeChat”
            var _methond_singnature = "("+ JAVA_STRING +"I)Z”
            jsb.reflection.callStaticMethod(ANDROID_CLASS_NAME, _methond_name, _methond_singnature, text, _type)
        }       
    },

OC代码:

+(BOOL)ShareToChatScene:(NSString*)content_txt
{
    SendMessageToWXReq *req = [[[SendMessageToWXReq alloc] init] autorelease];
    req.bText = true;
    req.scene = WXScene::WXSceneSession;
    req.text = content_txt;
    
    return [WXApi sendReq:req];
}

七、IOS分享文字内容到朋友圈

JS代码:


    // 微信文字内容分享到朋友圈
    // @text 分析内容
    ShareTextTotFriendCircle:function(text){
        if(cc.sys.isNative && cc.sys.os == cc.sys.OS_IOS){
             jsb.reflection.callStaticMethod(IOS_CLASS_NAME,"ShareToFriendCircle:", text)
        } else if(cc.sys.isNative && cc.sys.os == cc.sys.OS_ANDROID) {
            var _type = 2
            var _methond_name = “ShareToWeChat”
            var _methond_singnature = "("+ JAVA_STRING +"I)Z”
            jsb.reflection.callStaticMethod(ANDROID_CLASS_NAME, _methond_name, _methond_singnature, text, _type)
        } 
    },

OC代码:

+(BOOL)ShareToFriendCircle:(NSString*)content_txt
{
    SendMessageToWXReq *req = [[[SendMessageToWXReq alloc] init] autorelease];
    req.bText = true;
    req.scene = WXScene::WXSceneTimeline;
    req.text = content_txt;
    return [WXApi sendReq:req];
}

八、IOS截图分享给好友

JS代码:


    // 微信截图分享
    // @share_path 截图的路径
    ShareImageToWeChat:function(share_path){
        this.Log(“ShareImageToWeChat”)
        if(cc.sys.isNative && cc.sys.os == cc.sys.OS_IOS){
             jsb.reflection.callStaticMethod(IOS_CLASS_NAME,"ShareImageToChatScene:", share_path)
        } else if(cc.sys.isNative && cc.sys.os == cc.sys.OS_ANDROID) {
            var _methond_name = “ShareImageToWeChat”
            var _methond_singnature = "("+ JAVA_STRING +”)Z”
            var _bShareResult = jsb.reflection.callStaticMethod(ANDROID_CLASS_NAME, _methond_name, _methond_singnature, share_path)
            if(_bShareResult){
                this.Log("wechat share image success”)
            } else {
                this.Log("wechat share image failed”)
            }
        } 
    },

    // 截图分享 
    shareCaptureScreen: function () {
        //注意,EditBox,VideoPlayer,Webview 等控件无法被包含在截图里面
        //因为这是 OpenGL 的渲染到纹理的功能,上面提到的控件不是由引擎绘制的
        if(CC_JSB) {
            //如果待截图的场景中含有 mask,请使用下面注释的语句来创建 renderTexture
            var renderTexture = cc.RenderTexture.create(1280,720, cc.Texture2D.PIXEL_FORMAT_RGBA8888, gl.DEPTH24_STENCIL8_OES);
            var self = this
            //实际截屏的代码
            renderTexture.begin();
            cc.director.getScene()._sgNode.visit();
            renderTexture.end();
            renderTexture.saveToFile("wechat_share_image_screenshot.png",cc.ImageFormat.PNG, true, function () {
                // 调用微信sdk接口
                var _share_path = jsb.fileUtils.getWritablePath()
                self.ShareImageToWeChat(_share_path)
                cc.log("path:" + _share_path)
            });
        }
    },

OC代码:

+(BOOL)ShareImageToChatScene:(NSString*)path
{
    cocos2d::log("begin share image”);
    NSString *full_img_path = [path stringByAppendingString:@"wechat_share_image_screenshot.png”];
    UIImage *temp_img = [UIImage imageWithContentsOfFile:full_img_path];
    UIImage *thumbImage = [WXApiManager scaleToSize:CGSizeMake(320, 320) Target:temp_img];
    // 多媒体消息中包含的图片数据对象
    WXImageObject *imageObject = [WXImageObject object];
    imageObject.imageData = [NSData dataWithContentsOfFile:full_img_path];
    
    WXMediaMessage *message = [WXMediaMessage message];
    //message.title = title_txt;
    message.mediaObject = imageObject;
    message.messageExt = nil;
    message.messageAction = nil;
    message.mediaTagName = @“WECHAT_TAG_SHARELINK_FC”;
    [message setThumbImage:thumbImage];
    
    SendMessageToWXReq *req = [[[SendMessageToWXReq alloc] init] autorelease];
    req.bText = false;
    req.scene = WXScene::WXSceneSession;
    req.message = message;
    //curShareType = 1705;
    return [WXApi sendReq:req];
}

//等比例缩放
+(UIImage*)scaleToSize:(CGSize)size Target:(UIImage*)target_img
{
    CGFloat width = target_img.size.width;
    CGFloat height = target_img.size.height;
    
    float verticalRadio = size.height*1.0/height;
    float horizontalRadio = size.width*1.0/width;
    
    float radio = 1;
    if(verticalRadio>1 && horizontalRadio>1)
    {
        radio = verticalRadio > horizontalRadio ? horizontalRadio : verticalRadio;
    }
    else
    {
        radio = verticalRadio < horizontalRadio ? verticalRadio : horizontalRadio;
    }
    
    width = width*radio;
    height = height*radio;
    
    int xPos = (size.width - width)/2;
    int yPos = (size.height-height)/2;
    
    // 创建一个bitmap的context
    // 并把它设置成为当前正在使用的context
    UIGraphicsBeginImageContext(size);
    
    // 绘制改变大小的图片
    [target_img drawInRect:CGRectMake(xPos, yPos, width, height)];
    
    // 从当前context中创建一个改变大小后的图片
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();
    
    // 使当前的context出堆栈
    UIGraphicsEndImageContext();
    
    // 返回新的改变大小后的图片
    return scaledImage;
}

相关文章

网友评论

    本文标题:CocosCreator-【微信SDK】IOS平台-IOS微信分

    本文链接:https://www.haomeiwen.com/subject/qkdecftx.html