前期准备 微信申请的账号ID

#define WeiXinID @“XXXXXXXXXXX”

#define WeiXinSecret @“XXXXXXXXXXXXXXXXX”

1 .

微信sdk三个文件(WXApiObject.h,WXApi.h,libWeChatSDK.a)放在Libraries下面,然后再导入.

UnityAppController.h

添加头文件

#import <Libraries/Plugins/iOS/UnitySDKExport/WXApi.h>

添加响应WXApiDelegate到

@interface UnityAppController : NSObject<UIApplicationDelegate,WXApiDelegate>

2.

UnityAppController.mm

- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions

方法中添加微信启动

[WXApi registerApp:WeiXinID];

3.

//重写微信方法(必要步骤)

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{

return [WXApi handleOpenURL:url delegate:self];

}

//重写微信方法(必要步骤)

-(BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options{

return [WXApi handleOpenURL:url delegate:self];

}

bool    isfengxiang           = false; //这个是操作记录,设置一下你是登录操作,还是分享操作,根据这个分发不同的消息到U3D那边

//用户操作微信反馈

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

if (resp.errCode==0)

{

if (!isfengxiang) //微信登录回复

{

NSLog(@"微信登录返回成功!");

// 返回成功,获取Code

SendAuthResp *sendResp = resp;

NSString *code = sendResp.code;

NSLog(@"code=%@",sendResp.code);

//反馈给U3D那边

//由于本人是IOS小白,不太方便在这边做过多的代码编写,所以简洁为主。拿到必备的code,剩下的拿到自己擅长的U3D  C# 那边去处理

UnitySendMessage("GameManager", "WXShouQuanIOS",[sendResp.code UTF8String]); //第一个参数同时模型名称 2 该模型挂的脚本方法名称  3参数

}else

{

//所有分享成功都走这里,你要是有其他的操作需求,要做区分,比如朋友,朋友圈,分享图片,音乐。

NSLog(@"微信分享返回成功!");

UnitySendMessage("GameManager", "WXFengXiangIos","0"); //第一个参数同时模型名称 2 该模型挂的脚本方法名称  3参数

//传个“0” U3D那边只判断 等于”0”就成功。其他的全失败...

}

}else{

NSLog(@"微信登录失败! %d",resp.errCode);

}

/*

enum  WXErrCode {

WXSuccess           = 0,   成功

WXErrCodeCommon     = -1, 普通错误类型

WXErrCodeUserCancel = -2,   用户点击取消并返回

WXErrCodeSentFail   = -3,  发送失败

WXErrCodeAuthDeny   = -4,   授权失败

WXErrCodeUnsupport  = -5,  微信不支持

};

*/

}

//U3D调用的 登录请求,你们最好加一下是否安装微信的操作。

extern "C"{

void WeiXinLoginByIos(){

//构造SendAuthReq结构体

SendAuthReq* req =[[SendAuthReq alloc] init ];

req.scope = @"snsapi_userinfo" ;

req.state = @"123" ;

isfengxiang = false;

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

[WXApi sendReq:req];

}

void SdkFenXiangHaoYou(const char* name,const char* titl,const char* des){ //分享给好友 (名称多直白)

//创建发送对象实例

SendMessageToWXReq *sendReq = [[SendMessageToWXReq alloc] init];

sendReq.scene = 0;//0 =好友列表 1 = 朋友圈 2 = 收藏 (自己改一下要用的类型)

isfengxiang = true;

//创建分享内容对象

WXMediaMessage *urlMessage = [WXMediaMessage message];

NSString *strNSString = [[NSString alloc] initWithUTF8String:titl];

NSString *strNSString1 = [[NSString alloc] initWithUTF8String:des];

NSString *strNSString2 = [[NSString alloc] initWithUTF8String:name];

urlMessage.title = strNSString;//分享标题

urlMessage.description = strNSString1;;//分享描述

//创建多媒体对象

WXWebpageObject *webObj = [WXWebpageObject object];

webObj.webpageUrl =strNSString2;//分享链接

//完成发送对象实例

urlMessage.mediaObject = webObj;

sendReq.message = urlMessage;

//发送分享信息

[WXApi sendReq:sendReq];

}

//微信分享图片(这个最烦,因为不会oc,语法都不懂。截屏的操作已经在U3D那边做好了,放在一个地址里面,传到xcode这边,

然后取这张图片分享出去,取图片这操作还是问朋友的,哎~安卓那边很好处理,Java还是会一点的)

void SdkImagerShare(const char* imgurl)

{

isfengxiang = true;

NSString *strNSString = [[NSString alloc] initWithUTF8String:imgurl];

NSString *imagePath = strNSString;

UIImage *image = [UIImage imageWithContentsOfFile:imagePath];

NSData *imageData = UIImageJPEGRepresentation(image, 0.45f);

UIImage *newImage = [UIImage imageWithData:imageData];

CGSize size = CGSizeMake(128, 72);

UIGraphicsBeginImageContext(size); //size 为CGSize类型,即你所需要的图片尺寸

[newImage drawInRect:CGRectMake(0, 0, size.width, size.height)];

UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();

UIGraphicsEndImageContext();

// 用于微信终端和第三方程序之间传递消息的多媒体消息内容

WXMediaMessage *message = [WXMediaMessage message];

//        // 设置消息缩略图的方法

[message setThumbImage:scaledImage];

// 多媒体消息中包含的图片数据对象

WXImageObject *ext = [WXImageObject object];

ext.imageData = imageData;

message.mediaObject = ext;

// 图片真实数据内容

//        imageObject.imageData = [NSData dataWithContentsOfFile:filePath];

// 多媒体数据对象,可以为WXImageObject,WXMusicObject,WXVideoObject,WXWebpageObject等。

SendMessageToWXReq *req = [[SendMessageToWXReq alloc] init];

req.bText = NO;

req.message = message;

req.scene = 0;// 分享到朋友

[WXApi sendReq:req];

}

}

//至此xcode代码的部分就结束了

4. 回到U3D

导入头文件

using System.Runtime.InteropServices;

//标记 这个就不多说了,直接传参数就好了

[DllImport ("__Internal")]
private static extern void WeiXinLoginByIos ();
[DllImport ("__Internal")]
private static extern void SdkFenXiangHaoYou (string str1,string str2,string str3);

[DllImport ("__Internal")]
private static extern void SdkImagerShare (string str1);

//贴一下截屏存地址的方法

/// <summary>
/// 截屏分享.
/// </summary>
/// <returns>The screen.</returns>
public IEnumerator CaptureScreen()
{
yield return new WaitForEndOfFrame();

//分辨率自己设置想要的
int width = 1280; 
int height = 720; 
Texture2D tex = new Texture2D(width,height,TextureFormat.RGB24,false); 
tex.ReadPixels(new Rect(0,0,width,height),0,0,true); 
byte[] imagebytes = tex.EncodeToPNG();//转化为png 
tex.Compress(false);//对屏幕缓存进行压缩 
string pathstr = Application.persistentDataPath + "/screencapture.png";
if (File.Exists(pathstr))
{
File.Delete(pathstr); //每次都删除上一张,避免那啥
}
File.WriteAllBytes(Application.persistentDataPath + "/screencapture.png",imagebytes);//存储png
if (Application.platform == RuntimePlatform.Android) { //我这边就简单粗暴了,直接判断运行时的
SDKManager. _CallSdkApi("SdkImageShare", pathstr);
}  else {//ios
SDKManager._SdkImagerShare(pathstr);
}
}

5 总的代码部分就结束了。

xcode一些设置 一些包的导入就不写了,看官网的就好。

设置一下微信白名单info-> LSApplicationQueriesSchemes  :weixin

info->URL Types 新增一个

URL Schemes : wx0843b95eabxxxxxx

就是你微信申请到的ID

没写过这玩意,没啥排版,主要是方便以后自己看。

还有code拿到之后到U3D这边取用户信息的没贴了,有需要的回复,我再来补吧。

Unity IOS 微信SDK 记录相关推荐

  1. unity iOS 微信支付 教程

    时间:2018.6 Unity版本:5.6.2 平台:Unity+iOS 微信SDK版本:2018.6月 1.8.2版本 适用人群:unity 开发,oc基础较弱 食用前提:请确保已经清楚官方的整个支 ...

  2. Unity接入微信SDK——iOS(接入微信SDK)

    Unity接入微信SDK--iOS(一 接入微信SDK) 下载微信SDK 下载地址:微信开放平台 导出Unity Xcode项目 导出Unity Xcode项目,并打开 微信SDK导入Xcode项目 ...

  3. Flutter关于IOSApp配置以及上架AppStore配置和IosApp上架第三方平台以及关于IOS微信Sdk配置

    IosApp基础配置 1.准备mac电脑安装flutter基本环境可在官网教程进行配置https://flutterchina.club/setup-macos/ 2.安装xcode 3.申请苹果开发 ...

  4. untiy接入微信SDK实现iOS分享

    untiy接入微信SDK实现iOS分享功能 说明: 使用平台:mac电脑 Unity处理 进入微信开发者官网申请应用 2.下载微信的开发工具包sdk导入untiy的 Assest/Plugins/iO ...

  5. iOS 微信 第三方登录实现

    这篇文章原blog写得很好,排版也很好,之所以转载,完全是为了做个记录. 注意:代码自己动手写,不要复制! GitHub 一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标 ...

  6. iOS微信实现第三方登录的方法

    这篇文章主要介绍了iOS微信第三方登录实现的全过程,一步一步告诉大家iOS微信实现第三方登录的方法,感兴趣的小伙伴们可以参考一下 一.接入微信第三方登录准备工作.移动应用微信登录是基于OAuth2.0 ...

  7. iOS微信第三方登录实现

    iOS微信第三方登录实现 字数2824 阅读7603 评论19 喜欢46 注意:代码自己动手写,不要复制! 一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标准构建的微信O ...

  8. IOS微信三方登陆(不错)

    一.接入微信第三方登录准备工作. 移动应用微信登录是基于OAuth2.0协议标准构建的微信OAuth2.0授权登录系统. 在进行微信OAuth2.0授权登录接入之前,在微信开放平台注册开发者帐号,并拥 ...

  9. iOS微信分享不触发回调函数onResp()解决方法

    此问题最近困扰了我三天,检查项目代码与网上方法对照,并没有发现不对的地方,跟断点调试,只发现微信分享后微信端并没有给应用反馈,onResp()没有触发. 问题描述: 线上iOS用户在第三方应用点击微信 ...

  10. Unity接入微信支付SDK

    最近1年转了UE开发,博客更新的比较少,技术栈宽了不少,以后有空尽量多更新,也方便总结记忆 Unity接入微信支付整个过程坑比较多,网上之前的教程要么比较老,要么比较零碎,只能东拼西凑摸索,跑通后还是 ...

最新文章

  1. 利用Travis CI 让你的github项目持续构建(Node.js为例)
  2. mysql和sql互导_Mysql和SqlServer互相转换
  3. Spark _23 _读取parquet文件创建DataFrame(二)
  4. c 指针地址 突然改变_开发笔记 - Cpp - 指针 - 1.1 如何理解指针
  5. 一些用过的优秀软件摘录
  6. 剑指 Offer 43. 1~n 整数中 1 出现的次数(数位dp)
  7. 基于用户击键特征的身份鉴别系统
  8. uinty粒子系统子物体变大_Unity2018粒子系统全息讲解,坑深慎入(3)
  9. 【Python CheckiO 题解】Pawn Brotherhood
  10. JavaScript:监听网站离开更改title
  11. 图像拼接算法的基本原理
  12. metrics类型 普罗米修斯_普罗米修斯 -- 快速构建你的业务监控平台
  13. ubuntu找不到拼音输入,找不到中文拼音输入源
  14. 高等数学知识点总结——导数定义及性质、微积分、泰勒展开、洛必达法则、函数单调性判断
  15. java应届生面试收集总结
  16. 10 Kafka集群与运维
  17. Azure中配置网络安全组入站规则让外部网络访问VM中的网站
  18. mysql连接耗尽_避免数据库连接被耗尽的三种配置
  19. 说说如何在项目中引入 jBPM4 工作流框架以及遇到的坑儿
  20. jasypt 加解密的各个版本支持,看这一篇文章就够了

热门文章

  1. oracle 多字段条件查询,Oracle 多字段查询
  2. ES2015 for of 循环
  3. 众数和中位数的应用题_什么是众数和中位数
  4. 如何设置苹果手机铃声
  5. 纯CSS3 3D图片向上翻转渐隐消失动画DEMO演示
  6. 村长选举c语言程序,菜鸡学C语言之摸鱼村村长
  7. 设计模式笔记——观察者模式(村里二蛋偷偷取了个媳妇,村长知道了,然后全村都知道了...)
  8. c语言中不能在变量名函数名关键字中插入,C语言中,不能在变量名、函数名、关键字中插入空格和空行。...
  9. 如何开好项目验收会?
  10. Acwing-4728. 乘方