@cybercser
2018-06-15T17:34:29.000000Z
字数 15910
阅读 87
2018.01.16 v1.6.6
1.去掉已登录提示,允许重复登录SDK
2.飘窗中去掉切换账号
2018.01.09 v1.6.5
1.增加firebase初始化
2017.12.14 v1.6.4
1.资源包所有图片系统重命名
2017.09.12 v1.6.3
1.去掉SDK三方支付
2.上传手机型号的同时上传手机系统版本
2017.09.04 v1.6.2
1.增加Firebase数据分析,详见接口文档:21、Firebase事件上报
2.修改登录回调内容,详见接口文档:3、登录
3.修改绑定回调内容,详见接口文档:18、游戏内绑定EG帐号和邮箱接口
4.修改三方支付逻辑,与游戏无关
5.修改密码判断位数的正则表达式(6-18),与游戏无关
6.游戏接入横竖屏须知
7.Firebase接入须知
2017.08.11 v1.6.1
1.修复取消苹果支付,"正在支付中"提示框不消失问题
2.增加清链回调,详见接口文档:20、清除用户链中数据
2017.08.01 v1.6.0
1.修改登录新EG账号时,输错密码的bug
2.修改错误提示
3.修改显示“处理中”等提示不可点击(个人中心除外)
4.增加清除链中数据方法,详见接口文档:20、清除用户链中数据
2017.07.11 v1.5.9
1.修改密码错误的逻辑
2.增加了Idfa,防止账号丢失
3.更新Facebook版本
4.Facebook去除所有提示,cp方需要更加回调结果自行提示处理
5.新增Facebook跳转方法。详见接口文档:9、Facebook跳转
6.Facebook挑战,成功新增回调,显示挑战人数。详见用例:Facebook请求。
2017.06.30 v1.5.8
注:韩国极无双专用版本
1.修改密码错误的逻辑
2.增加了Idfa,防止账号丢失
3.更新Facebook版本
4.Facebook去除所有提示,cp方需要更加回调结果自行提示处理
5.新增Facebook跳转方法。详见接口文档:9、Facebook跳转方法。
6.增加Game Center登录
7.去掉游客登录,快速登录
8.Facebook挑战,成功新增回调,显示挑战人数。详见用例:Facebook请求。
2017.05.10 v1.5.7
1.重新加回增加登录回调
2017.04.28 v1.5.6
1.修改用户登录方式的存储方式,支持卸载(强更)后可静默登录。
2017.04.13 v1.5.5
1.修改支付流程中文案提示。
2017.04.05 v1.5.4
1.修改苹果支付测试流程
2.修改个人中心横竖屏问题
2017.03.16 v1.5.3
1.修改支付页面价格的显示
2.修改购买订单接口参数
3.购买商品接口的价格(price)参数研发可不必关注,传与否均可
4.修改个人中心、h5页面导航栏的显示
2017.02.09 v1.5.2
1.增加游戏内绑定EG帐号和绑定邮箱接口。接口详见 本文档:接口介绍 第18项
2.增加韩文语言包
2017.01.13 v1.5.1
1.优化正在时允许用户操作及进入官网时加载框有时候不消失
2.删除随机生成注册帐号
3.fb升级,在cp主文件即AppDelegate.m文件,增加新的方法,详见 接口接口介绍 第19项及示例代码。
2017.01.10 v1.5.0
1.修改注册登录接口参数
2.网络协议有http转为https安全协议
2016.12.14 v1.4.9
1.修复客服不能上传附件
2.在.plist文件增加相册(Privacy - Photo Library Usage Description)和拍照(Privacy - Camera Usage Description)权限
3.增加获取用户DeviceToken方法,- (NSString *)getDeviceToken; 详见文档-通知类型-18.获取DeviceToken
2016.11.29 v1.4.8
1.增加只有第三方支付配置
2.删除EG点支付页面商品名称的显示
3.h5支付页面增加显示header参数
4.h5页面增加支付宝支付方式
2016.11.16 v1.4.7
1.修改切换帐号不弹登录框
2.修复因为执行UI操作未切换到主线程导致个人中心点击X崩溃问题。
2016.11.07 v1.4.6
1.修改苹果支付功能,卡单bug
2.删除H5页面表头显示,H5增加关闭页面接口。
2016.11.07 v1.4.5
1.修改日文文案,原部分为繁体,后修改为日文,以及其他登录、游客登录、注册账号的文案翻译显示。
2016.10.29 v1.4.4
2016.10.27 v1.4.3
2016.07.18 v1.4.2
2016.06.30 v1.4.1
2016.06.21 v1.4.0
2016.06.07 v1.3.9
2016.05.23 v1.3.8
2016.05.11 v1.3.7
2016.05.11 v1.3.6
2016.05.11 v1.3.5
2016.04.28 v1.3.4
2016.04.14 v1.3.3
2016.04.09 v1.3.2
2016.04.08 v1.3.1
2016.04.05 v1.3.0
2016.04.01 v1.2.5
2016.03.31 v1.2.4
shortUid
的使用bug;2016.03.30 v1.2.3
shortUid
改为uid
,uid
改为longUid
,避免cp误解;2016.03.29 v1.2.2
2016.03.28 v1.2.1
login
接口增加EG_CODE_LOGOUT
状态回调;2016.03.25 v1.2.0
2016.03.22 v1.1.0
AFNetworking
,FBSDKCoreKit
,FBSDKLoginKit
,FBSDKShareKit
,UMengAnalytics-NO-IDFA
封装进英卓SDK中;2016.03.18 v1.0.0
英卓SDK集成用户登录、注册,以及支付相关功能。调用SDK登录接口完成用户登录过程;调用SDK支付接口完成支付过程,支付成功后英卓服务器把支付结果返回给游戏服务器,游戏服务器发放相应道具或虚拟货币。新版SDK支付引入平台币(EG Point),具体参考Demo。
英卓SDK使用了主流的AFNetworking
作为网络层,还使用了Facebook的相关FBSDKCoreKit
,FBSDKLoginKit
,FBSDKShareKit
,UMengAnalytics-NO-IDFA
。英卓SDK已经集成了以上库,若接入方也使用这些依赖包请注意去除冲突。
如果集成过程中出现如下问题,需要在Other Linker Flags
里加入 -lz。
"_compress2", referenced from:
+[UMANUtil deflatedDataPrefixedWith:level:source:] in libMobClickLibrary.a(UMANUtil.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
- 开发环境要求:
- Mac OS X 10.10以上版本
- Xcode 7.0以上版本
- iOS 7.0以上版本
- 联系英卓平台部提供
appid
,appkey
,platformid
(平台id)用以识别接入的游戏。- SDK包含一个库文件
EGKit.framework
,EGResource.bundle
是EGSDK的资源文件目前只支持简体中文、繁体中文、越南语、英语、韩语。支持iOS 7.0以上系统,兼容ipad和iphone版本,支持横屏和竖屏。
Open As Source Code
;ENJOYGAME_APP_ID
、FACEBOOK_APP_ID
、FACEBOOK_APP_NAME
替换成您相应的内容。注意事项:iOS 9.0以上系统会受到NSAppTransportSecurity影响,需要在plist中加入NSAllowsArbitraryLoads和Facebook Domains方能使用Facebook功能
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb{您的FACEBOOK_APP_ID}</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>{您的FACEBOOK_APP_ID}</string>
<key>FacebookDisplayName</key>
<string>{您的FACEBOOK_APP_NAME}</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbauth2</string>
</array>
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSExceptionDomains</key>
<dict>
<key>akamaihd.net</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
<key>facebook.com</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
<key>fbcdn.net</key>
<dict>
<key>NSExceptionRequiresForwardSecrecy</key>
<false/>
<key>NSIncludesSubdomains</key>
<true/>
</dict>
</dict>
</dict>
/**
*
* 错误码
*/
typedef NS_ENUM(NSInteger, EG_CODE) {
/**
*
* 成功
*/
EG_CODE_SUCCESS = 0,
/**
*
* 取消
*/
EG_CODE_CANCEL = 1,
/**
*
* 失败
*/
EG_CODE_FAIL = 2,
/**
*
* 未登录
*/
EG_CODE_LOGOUT = 3,
};
/**
*
* 弹框隐藏通知
*/
UIKIT_EXTERN NSString *const EGPopupViewHiddenNotification;
/**
* 获取SDK版本号
*/
+ (NSString *)EGKitVersion;
/**
*
* 初始化SDK
*
* @param appId 游戏申请到的appid
* @param appKey 游戏申请到的appkey
* @param channelId 游戏发行渠道(Android:104 IOS:105)
*
* @return 返回SDK管理对象
*/
- (instancetype)initWithAppId:(NSString *)appId
appKey:(NSString *)appKey
channelId:(NSString *)channelId;
/**
*
* 初始化SDK
*
* @param appId 游戏申请到的appid
* @param appKey 游戏申请到的appkey
* @param channelId 游戏发行渠道(Android:104 IOS:105)
* @param enable 是否开启FaceBook登录功能(默认开启)
*
* @return 返回SDK管理对象
*/
- (instancetype)initWithAppId:(NSString *)appId
appKey:(NSString *)appKey
channelId:(NSString *)channelId
enable:(BOOL)enable
/**
*
* 功能:用户登录,并返回登录结果
*
* @param compeletion 结果(成功则存在用户信息)
*
* @return code 错误码
* @return userInfo 登录用户信息
* 包含以下字段
* @return accessToken 访问token
* @return isBindEgAccount 是否绑定EG账号
* @return isBindEmail 是否绑定邮箱
* @return uid cp账号id
*/
- (void)login:(void(^)(NSInteger code, NSDictionary *userInfo))compeletion;
/**
*
* 功能:注销已登录用户
*
* @param compeletion 结果回调
*/
- (void)logout:(dispatch_block_t)compeletion;
/**
*
* 功能:切换账号
*/
- (void)switchAccount;
/**
*
* 个人中心
*/
- (void)openUCenter;
/**
*
* 功能:拉起支付界面
*
* @param payinfo 商品信息
* 包含以下字段的字典结构
* @param role_id 角色Id (长度限制64位)
* @param price 商品价格(单位:美分 整数)
* @param goods_id SKU 商品Id (商店后台设置)
* @param goods_name 商品名称 (长度限制64位)
* @param pay_description 透传字段 (长度限制256位)
* @param server_id 服务器id (长度限制10位)
* @param notify_cp_url 默认可不传以服务器后台设置为准,若传此参数则以此参数为准 (长度限制256位)
* @param compeletion 结果回调
*/
- (void)payment:(NSDictionary *)payinfo compeletion:(NSInteger code)compeletion;
/**
*
* Facebook模块加载
*
* @param application
* @param launchOptions
*
* @return
*/
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;
/**
*
* Facebook跳转
*
* @param application
* @param url
* @param sourceApplication
* @param annotation
*
* @return
*/
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;
/**
*
* Facebook跳转
*
* @param application
* @param url
* @param options
*
* @return
*/
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options;
/**
*
* Facebok登录
*/
- (void)showFacebookLoginView;
/**
*
* Facebook分享
*
* @param Title 标题(最新版SDK已去除此参数)
* @param Desc 描述(最新版SDK已去除此参数)
* @param Url 链接地址
* @param ImageUrl 图片链接地址(最新版SDK已去除此参数)
* @param compeletion 结果回调
*
* 只需要url,详情参照demo
*/
- (void)showFacebookShareView:(NSDictionary *)content compeletion:(void(^)(EG_CODE code))compeletion;
/**
*
* Facebook邀请
*
* @param appLinkURL 邀请App链接
* @param previewImageURL 预览图链接地址
* @param compeletion 结果回调
*/
- (void)showFacebookInvitingView:(NSDictionary *)content compeletion:(void (^)(EG_CODE code))compeletion;
/**
*
* Facebook请求
*
* @param title 标题
* @param message 描述(最长255个字符)
* @param actionType 请求类型(发送/索取)
* @param objectID 请求物品id
* @param data 自定义内容,可用于区分请求类型
* @param filters 图片链接地址
* @param compeletion 结果回调
* 注意:可以只传 message 字段。结果回调增加挑战人数的返回。
*/
- (void)showFacebookGameRequestView:(NSDictionary *)content compeletion:(void(^)(EG_CODE code, NSDictionary *result))compeletion;
/**
*
* facebook购买日志上传
*
* @param purchaseAmount 价格
* @param currency 货币类型(美元)
*/
+ (void)logPurchase:(double)purchaseAmount currency:(NSString *)currency;
/**
*
* fb完成关卡事件
*
* @param level
*/
+ (void)loggerLevel:(NSInteger)level;
/**
*
* facebook事件统计-新手引导事件
*
*/
+ (void)loggerTutorial;
/**
*
* 自定义事件统计
*
* @param event 事件
* @param params 事件内容
*/
+ (void)loggerEvent:(NSString *)event params:(NSDictionary *)params;
/**
*
* 绑定EG帐号或邮箱
*
* @param type 绑定类型 绑定EG帐号type值为:bindAccount 绑定邮箱type值为:bindEmail
* @param compeletion 回调结果
* @return code 错误码
* @return userInfo 登录用户信息
* 包含以下字段
* @return uid cp账号id
*/
- (void)binding:(NSString *)type compeletion:(void (^)(EG_CODE code, NSDictionary *userInfo))compeletion;
/**
*
* 详见官网
* https://developers.facebook.com/docs/ios/getting-started#startcoding
*
* 及示例代码
*/
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation;
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options;
/**
*
* 清空用户数据
* 注:用于解决错误,需要在调用登录方法等之前
*/
- (void)clearUserChain:(void(^)(EG_CODE code))compeletion;
/**
*
* firebase
*
* @param name 事件名称
* @param params 事件参数
*
*/
+ (void)logFirebaseEventName:(NSString *)name params:(NSDictionary *)params;
必须在在App启动时初始化SDK,否则iOS支付的历史订单会购买失败
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after application launch.
self.manager = [[EGManager alloc] initWithAppId:@"114001"
appKey:@"e1cbc8c0ec235daf0b4b5f80fcbac4e8"
channelId:@"101"];
// todo: others
return [self.manager application:application didFinishLaunchingWithOptions:launchOptions];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
// todo: others
// facebook 跳转
return [self.manager application:application
openURL:url
sourceApplication:sourceApplication
annotation:annotation];
}
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary *)options {
// todo: others
// facebook 跳转
return [self.manager application:application openURL:url options:options];
}
[self.manager login:^(EG_CODE code, NSDictionary *userInfo) {
switch (code) {
case EG_CODE_SUCCESS: {
NSLog(@"EG_CODE_SUCCESS %@", userInfo);
break;
}
case EG_CODE_CANCEL: {
NSLog(@"EG_CODE_CANCEL %@", userInfo);
break;
}
case EG_CODE_FAIL: {
NSLog(@"EG_CODE_FAIL %@", userInfo);
break;
}
case EG_CODE_LOGOUT: {
NSLog(@"EG_CODE_LOGOUT %@", userInfo);
break;
}
default: {
NSLog(@"default %@", userInfo);
break;
}
}
}];
[self.manager logout:^() {
// todo: 更新UI操作
}];
[self.manager switchAccount];
[self.manager payment:@{ @"role_id":@(123),
@"price":@(299),
@"goods_id":@"com.enjoygame.pmer.iap.tier3",
@"goods_name":@"测试商品名字",
@"pay_description":@"商品描述",
@"server_id":@(0) }
compeletion:^(NSInteger code) {
switch (code) {
case EG_CODE_SUCCESS: {
NSLog(@"EG_CODE_SUCCESS");
break;
}
case EG_CODE_CANCEL: {
NSLog(@"EG_CODE_CANCEL");
break;
}
case EG_CODE_FAIL: {
NSLog(@"EG_CODE_FAIL");
break;
}
case EG_CODE_LOGOUT: {
NSLog(@"EG_CODE_LOGOUT");
break;
}
default: {
NSLog(@"default");
break;
}
}
}];
[self.manager openUCenter];
[self.manager showFacebookShareView:@{ @"Url":@"http://www.enmonet.com" }];
[self.manager showFacebookInvitingView];
说明:actionType:0表示无,默认是0;1表示发送;2表示请求;3表示挑战
[self.manager showFacebookGameRequestView:@{ @"title":@"FaceBook请求测试",
@"message":@"英卓移动。",
@"actionType":@(0),
@"objectID":@"物品id",
@"filters":@(0),
@"data":@"自定义数据" } compeletion:^(EG_CODE code, NSDictionary *result) {
switch (code) {
case EG_CODE_SUCCESS: {
NSLog(@"EG_CODE_SUCCESS");
NSLog(@"挑战人数:%@",result[@"challengeCounts"]);
break;
}
case EG_CODE_CANCEL: {
NSLog(@"EG_CODE_CANCEL");
break;
}
case EG_CODE_FAIL: {
NSLog(@"EG_CODE_FAIL");
break;
}
case EG_CODE_LOGOUT: {
NSLog(@"EG_CODE_LOGOUT");
break;
}
default: {
NSLog(@"default");
break;
}
}
];
[self.manager binding:@"bindAccount"
compeletion: ^(EG_CODE code, NSDictionary *userInfo) {
if (code == EG_CODE_SUCCESS) {
self.userIdLabel.text = [NSString stringWithFormat:@"当前登录用户名:%@\nuid:%@",
userInfo[@"username"], userInfo[@"uid"]];
} else {
self.userIdLabel.text = @"";
}
switch (code) {
case EG_CODE_SUCCESS: {
NSLog(@"EG_CODE_SUCCESS %@ ", userInfo);
break;
}
case EG_CODE_CANCEL: {
NSLog(@"EG_CODE_CANCEL %@", userInfo);
break;
}
case EG_CODE_FAIL: {
NSLog(@"EG_CODE_FAIL %@", userInfo);
break;
}
case EG_CODE_LOGOUT: {
NSLog(@"EG_CODE_LOGOUT %@", userInfo);
break;
}
default: {
NSLog(@"default %@", userInfo);
break;
}
}
}];
[self.manager clearUserChain:^(EG_CODE code) {
switch (code) {
case EG_CODE_SUCCESS: {
NSLog(@"EG_CODE_SUCCESS");
break;
}
case EG_CODE_CANCEL: {
NSLog(@"EG_CODE_CANCEL");
break;
}
case EG_CODE_FAIL: {
NSLog(@"EG_CODE_FAIL");
break;
}
case EG_CODE_LOGOUT: {
NSLog(@"EG_CODE_LOGOUT");
break;
}
default: {
NSLog(@"default");
break;
}
}
}];
//此处用level_up做示例
//character可以不传
[EGManager logFirebaseEventName:@"level_up" params:@{@"character":@"骑士",@"level":[NSNumber numberWithInteger:40]}];
一、AppFlyer 需要单独接入, 必接项之外请上报充值数据。SDK接入详见附件文档:英卓市场、运营SDK之AppFlyerSDK接入文档。
二、Facebook已包含在EGSDk中,无需单独接入。
三、Google adwords
一、talkingdata接入文档详见英卓市场、运营SDK之talkingDataSDK接入文档
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window {
return UIInterfaceOrientationMaskLandscape;
}
![屏幕快照 2017-09-04 下午6.20.44](/Users/Rosehybrid/Desktop/屏幕快照 2017-09-04 下午6.20.44.png)
![屏幕快照 2017-09-04 下午6.21.46](/Users/Rosehybrid/Desktop/屏幕快照 2017-09-04 下午6.21.46.png)
![屏幕快照 2017-09-04 下午6.21.57](/Users/Rosehybrid/Desktop/屏幕快照 2017-09-04 下午6.21.57.png)
//如果您的游戏中iPad必须是上下可翻转的,那么请在此方法中判断是IPad后,return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown。
if(IS_IPAD){
return UIInterfaceOrientationMaskPortrait | UIInterfaceOrientationMaskPortraitUpsideDown;
} else {
return UIInterfaceOrientationMaskPortrait;
}
//对于iPhone来说没有上下翻转这一说,所以一定要写return UIInterfaceOrientationMaskPortrait。
//如果您的游戏不在意iPad的上下旋转,就不需要判断是否是iPad,直接显示示例中的代码。
- (UIInterfaceOrientationMask)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(nullable UIWindow *)window {
return UIInterfaceOrientationMaskPortrait;
}
GoogleService-Info.plist