热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HN669打包工具游戏对接

一、将游戏工程拖入到工具的HN669Ploy目录下,如下图:二、xCode打开游戏工程,将Core目录下的HN669SDKCore工程添加入游戏工程,并引用库,如图:三、调用API

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

   技术分享

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

   技术分享

三、调用API

1.Appdelegate中调用以下方法

 引用头文件:

#import 

 初始化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 --
-(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返回的

HN669打包工具游戏对接


推荐阅读
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 其实之前也有下载过完整的android源码,但是从来没有对这个做过一些总结,在加上最近需要经常去看,索性就在从新下载,编译一下,其实这些东西官网上面都有。http:sou ... [详细]
  • vue使用
    关键词: ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • intellij idea的安装与使用(保姆级教程)
    intellijidea的安装与使用(保姆级教程)IntelliJ在业界被公认为最好的java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(gi ... [详细]
  • 本文介绍了在Mac上安装Xamarin并使用Windows上的VS开发iOS app的方法,包括所需的安装环境和软件,以及使用Xamarin.iOS进行开发的步骤。通过这种方法,即使没有Mac或者安装苹果系统,程序员们也能轻松开发iOS app。 ... [详细]
  • 单页面应用 VS 多页面应用的区别和适用场景
    本文主要介绍了单页面应用(SPA)和多页面应用(MPA)的区别和适用场景。单页面应用只有一个主页面,所有内容都包含在主页面中,页面切换快但需要做相关的调优;多页面应用有多个独立的页面,每个页面都要加载相关资源,页面切换慢但适用于对SEO要求较高的应用。文章还提到了两者在资源加载、过渡动画、路由模式和数据传递方面的差异。 ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
  • Android获取app应用程序大小的方法
    Android获取app应用程序大小的方法-Android对这种方法进行了封装,我们没有权限去调用这个方法,所以我们只能通过AIDL,然后利用Java的反射机制去调用系统级的方法。 ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
author-avatar
寂寞已成伤兑
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有