Unity3d与iOS交互开发—接入平台SDK必备技能
public class SdkToIOS: MonoBehaviour
{
//平台接入开关
public static bool isOpenPlatform = false;
//导入定义到.m文件中的C函数
[DllImport("__Internal")]
private static extern void _PlatformInit();
//定义接口函数供游戏逻辑调用
public static void InitSDK()
{
if (isOpenPlatform)
{
_PlatformInit();
}
}
}
|
// MyIOSSdk.h
#import <Foundation/Foundation.h>
@interface MyIOSSdk : NSObject
@end
// MyIOSSdk.m
#import "MyIOSSdk.h"
//这里引用SDK的头文件
#import "SDKPlatform.h"
#if defined(__cplusplus)
extern "C"{
#endif
extern void UnitySendMessage(const charchar *, const charchar *, const charchar *);
extern NSString* _CreateNSString (const char* string);
#if defined(__cplusplus)
}
#endif
|
//*****************************************************************************
@implementation MyIOSSdk
//**********************
//message tools
+ (void)sendU3dMessage:(NSString *)messageName param:(NSDictionary *)dict
{
NSString *param = @"";
if ( nil != dict ) {
for (NSString *key in dict)
{
if ([param length] == 0)
{
param = [param stringByAppendingFormat:@"%@=%@", key, [dict valueForKey:key]];
}
else
{
param = [param stringByAppendingFormat:@"&%@=%@", key, [dict valueForKey:key]];
}
}
}
UnitySendMessage("SDK_Object", [messageName UTF8String], [param UTF8String]);
}
//**********************
//SDK fun
//初始化SDK
-(void)SDKInit
{
SDKcfg *cfg = [[[SDKcfg alloc] init] autorelease];
cfg.appid =123456;
cfg.appKey =@"aoaoaoaoaoaoaoaoaoaoaoaoaaoaoaoaoaoaoao";
cfg.orientation = UIDeviceOrientationLandscapeLeft;
//调用SDK的初始化函数
[[SDKPlatform defaultPlatform] SDKInit:cfg];
//添加回调监听
[[SDKPlatform defaultPlatform] addObserver:self selector:@selector(SNSInitResult:) name:(NSString *)kInitNotification object:nil];
}
//获取用户ID
-(NSString*)SDKGetUserID
{
[[SDKPlatform defaultPlatform] SDKGetUserID];
}
//**********************
//call back fun
//初始化更新回调
- (void)SNSInitResult:(NSNotification *)notify
{
[MyIOSSdk sendU3dMessage:@"SDKMsgInit" param:nil];
}
@end
//*****************************************************************************
#if defined(__cplusplus)
extern "C"{
#endif
//字符串转化的工具函数
NSString* _CreateNSString (const char* string)
{
if (string)
return [NSString stringWithUTF8String: string];
else
return [NSString stringWithUTF8String: ""];
}
char* _MakeStringCopy( const char* string)
{
if (NULL == string) {
return NULL;
}
char* res = (char*)malloc(strlen(string)+1);
strcpy(res, string);
return res;
}
static MyIOSSdk *mySDK;
//供u3d调用的c函数
void _PlatformInit()
{
if(mySDK==NULL)
{
mySDK = [[MyIOSSdk alloc]init];
}
[lsSDK SDKInit];
}
//注意这个函数是返回字符串
const char* _PlatformGetUin()
{
if(lsSDK==NULL)
{
lsSDK = [[MyIOSSdk alloc]init];
}
return _MakeStringCopy([[lsSDK SDKGetUserID] UTF8String]);
}
#if defined(__cplusplus)
}
#endif
|
void ParseMsg(string msg, out Dictionary<string, string> dicMsg){
if( null == msg || 0 == msg.Length ){
dicMsg = null;
return;
}
dicMsg = new Dictionary<string, string>();
string[] msgArray = msg.Split('&');
for( int i=0; i<msgArray.Length; i++){
string[] elementArray = msgArray[i].Split('=');
dicMsg.Add(elementArray[0],elementArray[1]);
}
}
|
Unity3d与iOS交互开发—接入平台SDK必备技能相关推荐
- UNITY3D与iOS交互解决方案
原地址:http://bbs.18183.com/thread-456979-1-1.html 本帖最后由 啊,将进酒 于 2014-2-27 11:17 编辑 "授人以鱼,不如授人以渔&q ...
- Java微信开发-微信java开发接入平台实例
微信上接入平台的demo是PHP的,没得java的,所以我自己做接入的时候遇到了一点小问题.用java做带薪开发,首先就要先通过微信的接入配置,大概原理就是微信往服务器发送一些数据,然后在服务器端做一 ...
- Android开发接入第三方SDK流程
接多第三方后,慢慢感觉都是有套路可寻的.但是也有很多要注意的地方 一.SDK集成:这是最重要的,最重要的,最重要的.集成一定要把文档看完,不能因为熟而跳过,或者是快速浏览. 不能跳过的是:混淆文件定义 ...
- Java开发必学:Java开发进大厂面试必备技能,技术总监都拍手叫好
前言 作为同时具备高性能.高可靠和高可扩展性的典型键值数据库,Redis不仅功能强大,而且稳定,理所当然地成为了大型互联网公司的首选. 众多大厂在招聘的时候,不仅会要求面试者能简单地使用Redis,还 ...
- Java开发进大厂面试必备技能,技术总监都拍手叫好
前言 锁是一种用来控制多线程访问共享资源的工具.通常,锁可以独占共享资源:同一时间只有一个线程可以获得锁,并且所有访问共享资源的线程都必须首先获得锁.前面我们介绍过了synchronized,使用sy ...
- Unity接入微信SDK——iOS(接入微信SDK)
Unity接入微信SDK--iOS(一 接入微信SDK) 下载微信SDK 下载地址:微信开放平台 导出Unity Xcode项目 导出Unity Xcode项目,并打开 微信SDK导入Xcode项目 ...
- 开发微信小程序的必备技能图谱
今天被微信小程序彻底刷屏了,哎呀,JS开发者坐等涨工资吧. 小程序是一种不需要下载安装即可使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下即可打开应用.也体现了&q ...
- iOS 平台 接入新浪微博 SDK 的坑(registerApp 的问题)
转载:http://leenjewel.github.io/blog/2015/01/08/ios-ping-tai-cocos2d-x-xiang-mu-jie-ru-xin-lang-wei-bo ...
- 开发腾讯移动游戏平台SDK ios版Ane扩展 总结
本文记录了在开发 腾讯移动游戏平台SDK(MSDK) ios版Ane扩展 过程中所遇到的问题 文中非常多问题都是基础的问题.对object c和xcode配置了解不深入导致的.(没办法,开发ane的程 ...
最新文章
- springcloud分布式事务_Springcloud 分布式事务集成Naco Seata
- python3----智能检测编码的工具
- python 扑克牌中的顺子
- Jquery创建JSON对象
- 解决PHP生成校验码时“图像因其本身有错无法显示”的错误
- mysql 触发器 库存管理_Mysql中的触发器(库存、用户订单中用到)
- ios html字符串 label,iOS UIlabel怎么加载html字符串 富文本的用法
- 腾讯这套SpringMvc面试题你了解多少?(面试必备)
- 防护疫情防御插画|后疫情时代宣传不可小觑
- 基于swing的java系统_Java实验--基于Swing的简单的歌曲信息管理系统(一)
- android togglebutton 自定义,自定义控件之-----ToggleButton
- CVE-2018-15982 flash 0day漏洞分析报告
- java 抽象工厂 类图_Java设计模式——抽象工厂模式
- 怎么把录音导入库乐队_库乐队导入电脑版 苹果库乐队怎么导入歌
- 《游戏设计、原型与开发——基于Unity与C#从构思到实现》学习笔记一
- python数据分析的常用方法_16种常用的数据分析方法汇总
- Android 7.0应用冷启动流程分析
- 数据库相关类型(日期、复合、bit、布尔)
- excel 画散点图 怎么设置图片的分辨率_【R语言】barplot柱状图+散点图+误差棒
- 基于微信小程序游泳馆管理系统(微信小程序毕业设计)
热门文章
- 浅谈Python中的type()、dtype()、astype()的区别
- webdriver和火狐浏览器历史版本下载
- 计算机图形学(十二):真实感图形(光照模型、材质模型)
- 中创教育提示:教育机构主动退费?警惕落入退费诈骗陷阱!
- 实时头发-面部皮肤分割与人脸肤色分类
- 4K智能AI双目自动跟踪云台摄像机
- vLive带你走进虚拟直播世界
- 2021011029wxy-实验四
- IE浏览器即将“退役”,银行、学校的老网站们如何兼容Chrome、Firefox和360等浏览器?
- Application.DoEvent使用