欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Unity3D 接入友盟统计 推送 IOS SDK

程序员文章站 2022-03-10 23:03:21
Unity3D 接入友盟统计 推送 IOS SDK游戏移动统计消息推送游戏移动统计下载链接官方文档从 unity3d 中导出 xcode 工程将下载的 framework 加入到 xcode 工程中添加依赖库libz.tbd 数据压缩libsqlite3.tbd 数据缓存CoreTelephony.framework 获取运营商标识SystemConfiguration.framework 判断网络UTDID.framework 用来获得设备标识ID组件。在友盟开...

Unity3D 接入友盟统计 推送 IOS SDK

游戏移动统计

  • 下载链接
  • 官方文档
  • 从 unity3d 中导出 xcode 工程
  • 将下载的 framework 加入到 xcode 工程中
  • 添加依赖库
libz.tbd    数据压缩
libsqlite3.tbd  数据缓存
CoreTelephony.framework 获取运营商标识
SystemConfiguration.framework   判断网络
UTDID.framework 用来获得设备标识ID组件。
  • 在友盟开发者中心新建一个 app 记住AppKey
  • 初始化友盟 sdk [UMConfigure initWithAppkey:@“Your appkey” channel:@“App Store”];
  • 设置是否需要打开调试日志 [UMConfigure setLogEnabled:YES];//设置打开日志
  • 设置当前场景类型 [MobClick setScenarioType:E_UM_GAME];
/** 初始化友盟所有组件产品
@param appKey 开发者在友盟官网申请的appkey.
@param channel 渠道标识,可设置nil表示"App Store".
*/
+ (void)initWithAppkey:(NSString *)appKey channel:(NSString *)channel;

示例代码
#import <UMCommon/UMCommon.h>
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *) launchOptions {
 [UMConfigure setLogEnabled:YES];//设置打开日志
 [UMConfigure initWithAppkey:@"Your appkey" channel:@"App Store"];
 [MobClick setScenarioType:E_UM_GAME];
}

信息统计

  • 玩家账户设置
1.说明和用途

当玩家账户确定或更改时使用

2.接口函数
+ (void)setUserLevelId:(int)level;
参数:

参数	类型	描述	备注
level	int	玩家等级
  • 充值
充值
1.说明和用途
玩家支付货币兑换虚拟币,用于统计游戏的收入情况
2.接口函数
+ (void)pay:(double)cash source:(int)source coin:(double)coin;
+ (void)pay:(double)cash source:(int)source item:(NSString *)item amount:(int)amount price:(double)price;
参数:

参数	类型	描述	备注
cash	double	真实币数量	>=1的整数,最多只保存小数点后2位
source	int	支付渠道	1 ~ 99的整数, 其中1..8 是预定义含义(参考下表),其余数值需要在网站设置。
coin	double	虚拟币数量	1大于等于0的整数, 最多只保存小数点后2位
item	NSString	道具名称	非空字符串
amount	int	道具数量	大于0的整数
source对应的数字、含义如下表:

数值	含义
1	App Store
2	支付宝
3	网银
4	财付通
5	移动通信
6	联通通信
7	电信通信
8	paypal
  • 购买
购买
1.说明和用途
玩家用虚拟币兑换一定数量、价值的道具
2.接口函数
+ (void)buy:(NSString *)item amount:(int)amount price:(double)price;
参数:

参数	类型	描述	备注
item	NSString	道具名称	非空字符串
amount	int	道具数量	大于0的整数
price	double	道具单价	>=0
注意:

购买道具需要传递道具ID(名称)、数量(amount)、虚拟币数量coin(amount * price)。
  • 消耗
消耗
1.说明和用途
玩家使用道具的情况
2.接口函数
+ (void)use:(NSString *)item amount:(int)amount price:(double)price;
参数:

参数	类型	描述	备注
item	NSString	道具名称	非空字符串
amount	int	道具数量	大于0的整数
price	double	道具单价	>=0
注意:

购买道具需要传递道具ID(名称)、数量(amount)、虚拟币数量coin(amount * price)。
  • 额外奖励
额外奖励
1.说明和用途
游戏中发生的金币、道具赠送行为
2.接口函数
+ (void)bonus:(double)coin source:(int)source;
+ (void)bonus:(NSString *)item amount:(int)amount price:(double)price source:(int)source;
参数:

参数	类型	描述	备注
source	int	支付渠道	取值在 1~99 之间, 1~3 已经被预先定义(参考下表), 其余数值需要在网站设置含义
coin	double	虚拟币数量	1大于等于0的整数, 最多只保存小数点后2位
item	NSString	道具名称	非空字符串
amount	int	道具数量	大于0的整数
price	double	道具单价	>=0
source对应的数字、含义如下表:

数值	含义
1	玩家赠送
2	开发商赠送
3	游戏奖励
注意:

消耗道具需要传递道具ID(名称)、数量(amount)、虚拟币数量coin(amount * price)。
  • 玩家账户设置
玩家账户设置
1.说明和用途
当玩家账户确定或更改时使用
2.接口函数
+ (void)setUserLevelId:(int)level;
参数:

参数	类型	描述	备注
level	int	玩家等级
  • 关卡
1.说明和用途
记录玩家在游戏中的进度
2.接口函数
+ (void)startLevel:(NSString *)level;
+ (void)finishLevel:(NSString *)level;
+ (void)failLevel:(NSString *)level;
参数:

参数	类型	描述	备注
level	NSString	关卡id	非空字符串

消息推送

  • 下载链接
  • 官方文档
  • 将下载好的 framework 库添加到 xcode 工程中
  • 在 apple development 中为当前应用创建 Certificates Apple Push Server 服务
  • 导出 p12 证书
  • 在友盟开发者中心为当前应用添加推送功能 并上传推送证书
  • 导入依赖库
UserNotifications.framework
libz.tbd
libsqlite3.0.tbd
  • 项目配置
打开推送开关 
打开后台推送权限
  • 初始化
// Push组件基本功能配置
UMessageRegisterEntity * entity = [[UMessageRegisterEntity alloc] init];
//type是对推送的几个参数的选择,可以选择一个或者多个。默认是三个全部打开,即:声音,弹窗,角标
entity.types = UMessageAuthorizationOptionBadge|UMessageAuthorizationOptionSound|UMessageAuthorizationOptionAlert;
[UNUserNotificationCenter currentNotificationCenter].delegate=self;
[UMessage registerForRemoteNotificationsWithLaunchOptions:launchOptions Entity:entity     completionHandler:^(BOOL granted, NSError * _Nullable error) {
 if (granted) {
 }else{
 }
}];
  • 处理前台收到消息的代理方法
-(void)userNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(UNNotificationPresentationOptions))completionHandler{
 NSDictionary * userInfo = notification.request.content.userInfo;
 if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
     //应用处于前台时的远程推送接受
     //关闭U-Push自带的弹出框
     [UMessage setAutoAlert:NO];
     //必须加这句代码
     [UMessage didReceiveRemoteNotification:userInfo];
     
 }else{
     //应用处于前台时的本地推送接受
 }
 //当应用处于前台时提示设置,需要哪个可以设置哪一个
 completionHandler(UNNotificationPresentationOptionSound|UNNotificationPresentationOptionBadge|UNNotificationPresentationOptionAlert);
}
  • 处理后台点击通知的代理方法

  • 注册device token
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
if (![deviceToken isKindOfClass:[NSData class]]) return;
    const unsigned *tokenBytes = (const unsigned *)[deviceToken bytes];
    NSString *hexToken = [NSString stringWithFormat:@"%08x%08x%08x%08x%08x%08x%08x%08x",
                          ntohl(tokenBytes[0]), ntohl(tokenBytes[1]), ntohl(tokenBytes[2]),
                          ntohl(tokenBytes[3]), ntohl(tokenBytes[4]), ntohl(tokenBytes[5]),
                          ntohl(tokenBytes[6]), ntohl(tokenBytes[7])];
    NSLog(@"deviceToken:%@",hexToken);
    //1.2.7版本开始不需要用户再手动注册devicetoken,SDK会自动注册
    //传入的devicetoken是系统回调didRegisterForRemoteNotificationsWithDeviceToken的入参,切记
    [UMessage registerDeviceToken:deviceToken];
}
  • 测试
友盟开发者中添加测试设备
友盟开发者后台创建测试任务
发布测试任务

本文地址:https://blog.csdn.net/design_i/article/details/107186606