HN669打包工具游戏对接

一、 将游戏工程拖入到工具的HN669Ploy目录下,如下图:

  

二、 xCode打开游戏工程,将Core目录下的HN669SDKCore工程添加入游戏工程,并引用库,如图:

   

三、调用API

1.Appdelegate中调用以下方法

引用头文件:

#import <HN669SDKCore/HN669SDKCore.h>

初始化SDK

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    self.window.backgroundColor = [UIColor whiteColor];
    [self.window makeKeyAndVisible];

    ////初始化应该在程序启动时调用, 也就是在didFinishLaunchingWithOptions方法里
    NSDictionary *sdkconfig = [[NSBundle mainBundle] objectForInfoDictionaryKey:@"HN669SDK"];
    [[HN669SDK sharedInstance] initWithParams:sdkconfig];
    [[HN669SDK sharedInstance] application:application didFinishLaunchingWithOptions:launchOptions];
    [[HN669Analytics sharedInstance] startLevel:@"1"];

    self.window.rootViewController = [[ViewController alloc] init];
    return YES;
}

AppDelegate事件处理

  需要在AppDelegate以下对应的生命周期方法中调用HN669SDK种对应这些方法:

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    [[U8SDK sharedInstance] application:application didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(nonnull NSDictionary *)userInfo
{
    [[U8SDK sharedInstance] application:application didReceiveRemoteNotification:userInfo];
}

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
    [[U8SDK sharedInstance] application:application didReceiveRemoteNotification:userInfo];
}

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification
{
    [[U8SDK sharedInstance] application:application didReceiveLocalNotification:notification];
}

- (void)applicationWillResignActive:(UIApplication *)application {
    [[U8SDK sharedInstance] applicationWillResignActive:application];
}

- (void)applicationDidEnterBackground:(UIApplication *)application {
    [[U8SDK sharedInstance] applicationDidEnterBackground:application];
}

- (void)applicationWillEnterForeground:(UIApplication *)application {
    [[U8SDK sharedInstance] applicationWillEnterForeground:application];
}

- (void)applicationDidBecomeActive:(UIApplication *)application {
    [[U8SDK sharedInstance] applicationDidBecomeActive:application];
}

- (void)applicationWillTerminate:(UIApplication *)application {
    [[U8SDK sharedInstance] applicationWillTerminate:application];
}

-(BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url
{
    return [[U8SDK sharedInstance] application:application handleOpenURL:url];
}

-(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    return [[U8SDK sharedInstance] application:application openURL:url sourceApplication:sourceApplication annotation:annotation];
}

2.游戏主界面viewController

实现HN669SDKDelegate协议,并且实现协议中定义的方法,在ViewController中的viewDidLoad方法中调用:

[[HN669SDK sharedInstance] setDelegate:self];

实现协议方法:

  这些协议回调根据渠道可能会有,也可能不回掉

#pragma mark --<HN669SDKDelegate>
-(UIView*) GetView{
    return [self GetViewController].view;;
}

-(UIViewController*) GetViewController{
    return self;
}

//SDK初始化成功回调
-(void) OnPlatformInit:(NSDictionary*)params{
}

//登录成功回调
-(void) OnUserLogin:(NSDictionary*)params{
}

//登出回调
-(void) OnUserLogout:(NSDictionary*)params{
}

//支付回调
-(void) OnPayPaid:(NSDictionary*)params{
}

//事件回调
-(void) OnEventCustom:(NSString*)eventName params:(NSDictionary*)params{
}

3.用户功能API调用

调用登录接口,打开SDK登录界面

[[HN669SDK sharedInstance] login]; 

1) 登录(必须实现)

调用登录接口,打开SDK登录界面

[[U8SDK sharedInstance].defaultUser login];

SDK登录成功的回调,通过Notification通知到抽象层中,可以在上面OnUserLogin回调中进行处理。这个时候,应该去U8Server做二次登录认证

2) 切换账号(必须实现)

部分渠道没有支持切换账号接口,那么切换账号默认调用的接口和登录相同。

[[U8SDK sharedInstance].defaultUser switchAccount];

切换账号成功的回调,和登录的回调相同,都是在OnUserLogin中处理

3) 登出(非必需实现)

部分渠道没有登出接口,那么登出接口默认不做任何实现

[[U8SDK sharedInstance].defaultUser logout];

登出成功的回调,在上面OnUserLogout回调方法中处理

4) 显示个人中心

Note: 部分渠道要求游戏内必须要有[个人中心]按钮,点击进入渠道SDK的个人中心界面.但是因为是部分渠道有这个接口,部分渠道没有提供这个接口,所以,对于没有提供该接口的渠道,该方法不做任何逻辑。
游戏层需要根据支付支持该方法的判定,来显示或者隐藏该按钮。

调用该方法时,先判断当前渠道是否提供了个人中心接口:

if([[U8SDK sharedInstance].defaultUser hasAccountCenter])
{

  [[U8SDK sharedInstance].defaultUser showAccountCenter];

}

3、支付接口

在调用支付的时候,和Android一样,游戏中需要传入对应的参数,然后调用支付插件的pay方法:

[[U8SDK sharedInstance].defaultPay pay:dic]; //参数dic是一个NSDictionary结构

支付成功的回调,可以在上面OnPayPaid回调方法中进行处理。一般网游这里不需要做特殊的处理,因为支付是异步的,这里支付成功,仅仅是SDK支付请求成功,并不代表玩家得到了游戏币。真正充值成功,是异步通知到游戏服务器的。

关于支付参数的说明:

参数Key 参数类型 参数说明
productId String 充值商品ID,游戏内的商品ID
productName String 商品名称,比如100元宝,500钻石...
productDesc String 商品描述,比如 充值100元宝,赠送20元宝
price int 充值金额(单位:元)
ratio int 兑换比例,暂时无用途
buyNum int 购买数量,一般都是1
coinNum int 玩家当前身上剩余的游戏币
serverID String 玩家所在服务器的ID
serverName String 玩家所在服务器的名称
roleID String 玩家角色ID
roleName String 玩家角色名称
roleLevel String 玩家角色等级
vip String 玩家vip等级
payNotifyUrl String 支付回调地址,下单时,U8Server返回的
orderID String U8Server订单号,下单时,U8Server返回的
extension String 渠道相关的扩展数据,下单时,U8Server返回的

时间: 2024-08-07 03:37:25

HN669打包工具游戏对接的相关文章

【Cocos2d-Js基础教学(5)资源打包工具的使用及资源的异步加载处理】

[转载]http://www.cnblogs.com/zisou/p/cocos2dx-js5.html   TexturePacker是纹理资源打包工具,支持Cocos2dx的游戏资源打包. 如果用过的同学可以直接看下面的资源的异步加载处理 首先为什么用TexturePacker? 1,节省图片资源实际大小 2,减少我们游戏中大量资源带来的内存负荷 3,方便游戏对纹理资源的内存管理 游戏开发到后期,我们或许都会遇到的瓶颈就是需要对游戏包进行"瘦身"和内存优化.那么使用TextureP

教你快速高效接入SDK——打包工具的实现(反编译资源动态整合打渠道包)

整套u8sdk的核心思想,就是让我们的SDK接入成本,能够控制在1,而不是N.啥意思呢?就是,我开发第一款游戏的时候,我接了这些SDK,当我开发第二款,第三款游戏的时候,这套SDK可以尽可能的复用,而不是每开发一款游戏,又从头去接各个渠道sdk.所有的游戏都能够使用同一套SDK接入框架,来快速完成SDK的接入工作.那么,在U8SDK里,我们怎么做到呢?请看我们总体的思路: 游戏A,游戏B,游戏C是三款不同的游戏,对于他们来说,他们只需要调用U8SDK抽象层提供的接口,就完成了所有SDK的接入工作

细说前端自动化打包工具--webpack

背景 记得2004年的时候,互联网开发就是做网页,那时也没有前端和后端的区分,有时一个网站就是一些纯静态的html,通过链接组织在一起.做网页就和用world编辑一个文档一样,只不过那个工具叫Dreamweaver.一个html页面,夹杂着css,javascript是再常见不过的事了. 随着前端的不断发展,特别是单页应用的兴起,这种所见即所得的IDE工具,就渐渐地退出了前端的主流.一个应用,通常只有一个静态页面(index.html),甚至这个页面的body只有一个或少数几个div组成.这时有

OTA Update官方文档(二,OTA 打包工具)

写在前面: OTA打包工具ota_from_target_files(build/tools/releasetools/目录下)可以为我们创建两种类型的更新包:整包和增量包.打包工具一般来说会对我们称之为目标文件(target-files.zip)进行打包,该目标文件是有Android编译系统产生,通常可在终端下使用make otapackage生成. 一.整包升级 一个整包包含了Android设备的整个终态(system/boot/recovery分区),只要设备可以接收更新包并且进入reco

Inno Setup 打包工具总结

Inno Setup 打包工具总结 分类: Install Setup 2013-02-02 15:44 2386人阅读 评论(0) 收藏 举报 最近打包用到了Inno setup,在这个过程中容易犯一些低级错误,特别写出来已提醒自己 1.打包文件夹 Source: "D:MyProject/XX/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs 它解压时直接把XX目

Atitit.项目修改补丁打包工具 使用说明

1.1. 打包工具已经在群里面.打包工具.bat1 1.2. 使用方法:放在项目主目录下,执行即可1 1.3. 打包工具的原理以及要打包的项目列表1 1.4. 打包工具.bat源码以及参数解释1 1.1. 打包工具已经在群里面.打包工具.bat .    1.2. 使用方法:放在项目主目录下,执行即可 注意里面的项目路径,数据库安装路径安装实际的路径来配置下 1.3. 打包工具的原理以及要打包的项目列表 主要利用winrar根据时间打包修改过的文件,打包数据库sql文件则是  调用数据库工具变成

tar 打包工具详解

tar 本身为一个打包工具,可以把目录打包成一个文件,它的好处是把所有文件整合成一个大文件整体,便于拷贝或移动. 语法:tar [-zjxcvfpP] filename tar 目录有多个选项: -z:同时用gzip压缩 -j:同时用bzip2压缩 -x:解包或者解压缩 -t:查看 tar 包里面的文件 -c:建立一个 tar 包或者压缩文件包 -v:可视化 -f:后面跟文件名,压缩时跟"-f 文件名",意思是压缩后的文件名为filename,解压时跟"-f 文件名"

[转]Python打包工具

作者:Tarek Ziadé,翻译:张吉 原文:http://www.aosabook.org/en/packaging.html 转载地址:http://www.ituring.com.cn/article/19090 14.1 简介 对于如何安装软件,目前有两种思想流派.第一种是说软件应该自给自足,不依赖于其它任何部件,这点在Windows和Mac OS X系统中很流行.这种方式简化了软件的管理:每个软件都有自己独立的“领域”,安装和卸载它们不会对操作系统产生影响.如果软件依赖一项不常见的类

iOS 本地自动打包工具

1.为什么要自动打包工具? 每修改一个问题,测试都让你打包一个上传fir , 你要clean -> 编译打包 -> 上传fir -> 通知测试.而且打包速度好慢,太浪费时间了.如果有一个工具能自动的帮你做完上面所有的事情,岂不是快哉? 2.网上有那么多自动打包工具,我直接下载就行了为啥还要学习? 没错网上有很多打包工具,包括github上也有一些直接从github下载并打包上传的,但是他们的不一定适合你,首先下载下来要配置各种参数,不会配,还有网上大多是针对普通项目,但是我们项目是coc