Commit 1bfd8354c0627ab215e36be8547cb7f0787f1cbf

Authored by alexYang
1 parent 90c605a64c
Exists in master and in 1 other branch dev

参数from和channelId添加,修改ios11适配iphoneX时对低版本的兼容

Showing 6 changed files with 6 additions and 3 deletions Inline Diff

1 # Gump IOS SDK使用文档 1 # Gump IOS SDK使用文档
2 2
3 3
4 接入手册 4 接入手册
5 V 3.4.15 5 V 3.4.16
6 2017年2月7日 6 2017年3月2日
7 7
8 ## 概述 8 ## 概述
9 #### 本SDK提供gump账号,fb账号,vk账号,Google帐号四种账号登录,iap支付和第三方支付两种支付功能,其中gump账号登录和fb账号登录功能为必须接入,支付可根据需要选择性接入。 9 #### 本SDK提供gump账号,fb账号,vk账号,Google帐号四种账号登录,iap支付和第三方支付两种支付功能,其中gump账号登录和fb账号登录功能为必须接入,支付可根据需要选择性接入。
10 10
11 ## 接入步骤 11 ## 接入步骤
12 ### 1、添加Framework和资源文件 12 ### 1、添加Framework和资源文件
13 + 以下为必须添加的framework以及资源bundle: 13 + 以下为必须添加的framework以及资源bundle:
14 MobileCoreServices.framework、SystemConfiguration.framework、libz.dylib、CFNetwork.framework、GameSDK.framework、StoreKit.framework、GameSDKResources.bundle 14 MobileCoreServices.framework、SystemConfiguration.framework、libz.dylib、CFNetwork.framework、GameSDK.framework、StoreKit.framework、GameSDKResources.bundle
15 + 以下为可选,若接入vk登录则需要添加以下framework和bundle,其中VKSdk.framework和VKSDKResources.bundle请自行从vk.com下载,使用1.3版本 15 + 以下为可选,若接入vk登录则需要添加以下framework和bundle,其中VKSdk.framework和VKSDKResources.bundle请自行从vk.com下载,使用1.3版本
16 VKSdk.framework、VKBridge.framework、VKSDKResources.bundle 16 VKSdk.framework、VKBridge.framework、VKSDKResources.bundle
17 + 以下可选,若接入微信登陆则需要添加如下的framework: 17 + 以下可选,若接入微信登陆则需要添加如下的framework:
18 libsqlite3.0.dylib, libc++.dylib, Security.framework, CoreTelephony.framework, CFNetwork.framework 18 libsqlite3.0.dylib, libc++.dylib, Security.framework, CoreTelephony.framework, CFNetwork.framework
19 19
20 20
21 ### 2、引入头文件,设置build setting 21 ### 2、引入头文件,设置build setting
22 需要使用头文件有LetsGameAPI.h和VKBridge.h,其中VKBridge.h为接入vk时使用,不接入vk可忽略。 22 需要使用头文件有LetsGameAPI.h和VKBridge.h,其中VKBridge.h为接入vk时使用,不接入vk可忽略。
23 因sdk内使用了category,需要设置other linker flag为 -ObjC 23 因sdk内使用了category,需要设置other linker flag为 -ObjC
24 24
25 25
26 ### 3、增加必要配置 26 ### 3、增加必要配置
27 1)在application delegate中, 在application:openURL:sourceApplication:annotation:添加返回: 27 1)在application delegate中, 在application:openURL:sourceApplication:annotation:添加返回:
28 28
29 return [[LetsGameAPI instance] handleOpenURL:url sourceApplication:sourceApplication]; 29 return [[LetsGameAPI instance] handleOpenURL:url sourceApplication:sourceApplication];
30 30
31 31
32 2)配置URL-schema(vk专用,不接入vk可忽略) 32 2)配置URL-schema(vk专用,不接入vk可忽略)
33 Xcode 5: Open your application settings then select the Info tab. In the URL Types section click the plus sign. Enter vk+APP_ID (e.g. vk1234567) to the Identifier and URL Schemes fields. 33 Xcode 5: Open your application settings then select the Info tab. In the URL Types section click the plus sign. Enter vk+APP_ID (e.g. vk1234567) to the Identifier and URL Schemes fields.
34 ![](images/vk1.jpg) 34 ![](images/vk1.jpg)
35 Xcode 4: Open your Info.plist then add a new row URL Types. Set the URL identifier to vk+APP_ID 35 Xcode 4: Open your Info.plist then add a new row URL Types. Set the URL identifier to vk+APP_ID
36 ![](images/vk2.jpg) 36 ![](images/vk2.jpg)
37 3)配置URL-schema(weChat专用,不接入可以忽略) 37 3)配置URL-schema(weChat专用,不接入可以忽略)
38 选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id 38 选中“TARGETS”一栏,在“info”标签栏的“URL type“添加“URL scheme”为你所注册的应用程序id
39 选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin和wechat 39 选中“TARGETS”一栏,在“info”标签栏的“LSApplicationQueriesSchemes“添加weixin和wechat
40 40
41 ### 4、在工程里添加SDK登录代码 41 ### 4、在工程里添加SDK登录代码
42 42
43 [LetsGameAPI instance].appId = @"100"; // 设置appId 43 [LetsGameAPI instance].appId = @"100"; // 设置appId
44 [LetsGameAPI instance].appKey = @"100"; // 设置appKey 44 [LetsGameAPI instance].appKey = @"100"; // 设置appKey
45 [LetsGameAPI instance].channelId = @"100"; //设置channelId
45 46
46 //启用vk的代码,需要填入vk appId,若不接入vk,可以忽略 47 //启用vk的代码,需要填入vk appId,若不接入vk,可以忽略
47 //VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"]; 48 //VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"];
48 //[LetsGameAPI instance].vkBridge = vkBridge; 49 //[LetsGameAPI instance].vkBridge = vkBridge;
49 50
50 //隐藏fb登录 51 //隐藏fb登录
51 [LetsGameAPI disableFB:YES]; 52 [LetsGameAPI disableFB:YES];
52 //隐藏Google登录 53 //隐藏Google登录
53 [LetsGameAPI disableGoogle:YES]; 54 [LetsGameAPI disableGoogle:YES];
54 //隐藏gumptech的logo 55 //隐藏gumptech的logo
55 [LetsGameAPI hiddenLogo:YES]; 56 [LetsGameAPI hiddenLogo:YES];
56 //隐藏line登录 57 //隐藏line登录
57 [LetsGameAPI disableLine:YES]; 58 [LetsGameAPI disableLine:YES];
58 //隐藏wechat登录 59 //隐藏wechat登录
59 [LetsGameAPI disableWeChat:YES]; 60 [LetsGameAPI disableWeChat:YES];
60 61
61 [[LetsGameAPI instance] showLoginView]; // 弹出登录页面 62 [[LetsGameAPI instance] showLoginView]; // 弹出登录页面
62 63
63 // 登录成功回调 64 // 登录成功回调
64 [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) { 65 [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) {
65 NSLog(@"%@", [NSString stringWithFormat:@"login succ: userId = %@, sessionKey = %@, accountType = %d", userId, sessionKey, type]); 66 NSLog(@"%@", [NSString stringWithFormat:@"login succ: userId = %@, sessionKey = %@, accountType = %d", userId, sessionKey, type]);
66 }; 67 };
67 68
68 // 登录失败回调 69 // 登录失败回调
69 [LetsGameAPI instance].dismissBlock = ^() { 70 [LetsGameAPI instance].dismissBlock = ^() {
70 NSLog(@"dismiss without login"); 71 NSLog(@"dismiss without login");
71 }; 72 };
72 73
73 ### 5、登录注销 74 ### 5、登录注销
74 注销接口只要设置过appId和appKey之后就不需要设置了,注销完成之后会回到登录界面。FB登录回到登录页面,Gump登录或者游客登录回到登录框。 75 注销接口只要设置过appId和appKey之后就不需要设置了,注销完成之后会回到登录界面。FB登录回到登录页面,Gump登录或者游客登录回到登录框。
75 76
76 [LetsGameAPI instance].appId = @"100";//设置appId 77 [LetsGameAPI instance].appId = @"100";//设置appId
77 [LetsGameAPI instance].appKey = @"100";//设置appkey 78 [LetsGameAPI instance].appKey = @"100";//设置appkey
78 [[LetsGameAPI instance] logout]; //注销 79 [[LetsGameAPI instance] logout]; //注销
79 80
80 81
81 ### 6、第三方支付 82 ### 6、第三方支付
82 [LetsGameAPI instance].appId = @"10022"; 83 [LetsGameAPI instance].appId = @"10022";
83 [LetsGameAPI instance].appKey = @"f899139df5e1059396431415e770c6dd"; 84 [LetsGameAPI instance].appKey = @"f899139df5e1059396431415e770c6dd";
84 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; 85 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary];
85 [payInfo setValue:@"5001" forKey:@"serverId"];//服务器id,必传参数 86 [payInfo setValue:@"5001" forKey:@"serverId"];//服务器id,必传参数
86 [payInfo setValue:@"10010" forKey:@"roleId"];//用户角色id 87 [payInfo setValue:@"10010" forKey:@"roleId"];//用户角色id
87 [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id 88 [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id
88 [payInfo setValue:@"10" forKey:@"amount"];//金额 89 [payInfo setValue:@"10" forKey:@"amount"];//金额
89 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//外部订单信息 90 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//外部订单信息
90 [payInfo setValue:@"元宝" forKey:@"product"];//物品信息 91 [payInfo setValue:@"元宝" forKey:@"product"];//物品信息
91 [payInfo setValue:self.sessionKey forKey:@"sessionKey"];//登录成功的sessionKey 92 [payInfo setValue:self.sessionKey forKey:@"sessionKey"];//登录成功的sessionKey
92 [[LetsGameAPI instance] pay:payInfo handleCallBack:^{ 93 [[LetsGameAPI instance] pay:payInfo handleCallBack:^{
93 //第三方支付完成时的回调(包括支付成功和支付失败,除了支付过程中取消的),取消的不会有回调 94 //第三方支付完成时的回调(包括支付成功和支付失败,除了支付过程中取消的),取消的不会有回调
94 NSLog(@"第三方支付完成"); 95 NSLog(@"第三方支付完成");
95 }]]; 96 }]];
96 97
97 ### 7、IAP支付 98 ### 7、IAP支付
98 若要使用apple IAP支付,需要在AppDelegate的application: didFinishLaunchingWithOptions:方法内注册iap observer,使用如下方法 99 若要使用apple IAP支付,需要在AppDelegate的application: didFinishLaunchingWithOptions:方法内注册iap observer,使用如下方法
99 100
100 [[LetsGameAPI instance] registeIapObserver]; 101 [[LetsGameAPI instance] registeIapObserver];
101 具体调用iap支付的方法如下: 102 具体调用iap支付的方法如下:
102 103
103 [LetsGameAPI instance].appId = @"10022"; 104 [LetsGameAPI instance].appId = @"10022";
104 [LetsGameAPI instance].appKey = @"93a27b0bd99bac3e68a440b48aa421ab"; 105 [LetsGameAPI instance].appKey = @"93a27b0bd99bac3e68a440b48aa421ab";
105 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; 106 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary];
106 [payInfo setValue:@"5001" forKey:@"serverId"];//当前用户所在的服务器Id 107 [payInfo setValue:@"5001" forKey:@"serverId"];//当前用户所在的服务器Id
107 [payInfo setValue:@"10010" forKey:@"roleId"];//当前用户的角色id 108 [payInfo setValue:@"10010" forKey:@"roleId"];//当前用户的角色id
108 [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id,用于统计 109 [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id,用于统计
109 [payInfo setValue:@"10" forKey:@"amount"];//对应支付项的支付金额,实际支付金额以itunes配置为准 110 [payInfo setValue:@"10" forKey:@"amount"];//对应支付项的支付金额,实际支付金额以itunes配置为准
110 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//扩展信息,可以游戏自定义,建议传自有订单号 111 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//扩展信息,可以游戏自定义,建议传自有订单号
111 [payInfo setValue:@"test.product.1" forKey:@"product"];//itunes 后台配置的对应支付项的productId 112 [payInfo setValue:@"test.product.1" forKey:@"product"];//itunes 后台配置的对应支付项的productId
112 [[LetsGameAPI instance] iap:payInfo forUser:@"" succCallback:^(NSString *orderId) { 113 [[LetsGameAPI instance] iap:payInfo forUser:@"" succCallback:^(NSString *orderId) {
113 //此处的回调表明支付已经完成,但此时支付不一定成功,需要服务端验证支付结果 114 //此处的回调表明支付已经完成,但此时支付不一定成功,需要服务端验证支付结果
114 //orderId为gump生成的订单号,此订单号可以在gump server查询此笔支付是否成功 115 //orderId为gump生成的订单号,此订单号可以在gump server查询此笔支付是否成功
115 NSLog(@"IAP completed orderId of Gumptech:%@",orderId); 116 NSLog(@"IAP completed orderId of Gumptech:%@",orderId);
116 } failCallback:^(NSString *orderId) { 117 } failCallback:^(NSString *orderId) {
117 //支付失败 118 //支付失败
118 NSLog(@"IAP file orderId of Gumptech:%@",orderId); 119 NSLog(@"IAP file orderId of Gumptech:%@",orderId);
119 }]; 120 }];
120 ### 8、token的获取 121 ### 8、token的获取
121 FB登录之后会产生token并自动登录,需要如果需要token的话,需要自己调用接口获取。 122 FB登录之后会产生token并自动登录,需要如果需要token的话,需要自己调用接口获取。
122 123
123 //tokenString:token字符串 124 //tokenString:token字符串
124 //refreshTime:refreshTime token最后刷新的时间,即获取的token的时间 125 //refreshTime:refreshTime token最后刷新的时间,即获取的token的时间
125 //expirationTime:expirationTime token最后的有效时间 126 //expirationTime:expirationTime token最后的有效时间
126 [[LetsGameAPI instance] obtainAccessTokenSuccess:^(NSString *tokenString, NSString *refreshTime, NSString *expirationTime) { 127 [[LetsGameAPI instance] obtainAccessTokenSuccess:^(NSString *tokenString, NSString *refreshTime, NSString *expirationTime) {
127 NSLog(@"tokenString %@, refreshTime %@, expirationTime %@", tokenString, refreshTime, expirationTime); 128 NSLog(@"tokenString %@, refreshTime %@, expirationTime %@", tokenString, refreshTime, expirationTime);
128 } failure:^(NSString *errorString) { 129 } failure:^(NSString *errorString) {
129 NSLog(@"get token faile"); 130 NSLog(@"get token faile");
130 }]; 131 }];
131 132
132 133
133 ### 9、第三方支付版本 134 ### 9、第三方支付版本
134 第三方支付,分成两个版本:没有gump币和有gump币,不设置时默认为带gump币版本,如果使用不带gump币的版本如下设置: 135 第三方支付,分成两个版本:没有gump币和有gump币,不设置时默认为带gump币版本,如果使用不带gump币的版本如下设置:
135 136
136 需要在 application:didFinishLaunchingWithOptions方法中添加: 137 需要在 application:didFinishLaunchingWithOptions方法中添加:
137 138
138 [[LetsGameAPI instance] decideWebPayVersion:1] 139 [[LetsGameAPI instance] decideWebPayVersion:1]
139 140
140 141
141 ### 10、关于侵权还是侵权的接口显示 142 ### 10、关于侵权还是侵权的接口显示
142 运营在后台配置此包名和版本在什么时候显示侵权内容还是不侵权内容,此接口调用需要在游戏才开始加载的时候调用,返回值是YES的时候显示侵权内容,在NO的时候显示不侵权内容。 143 运营在后台配置此包名和版本在什么时候显示侵权内容还是不侵权内容,此接口调用需要在游戏才开始加载的时候调用,返回值是YES的时候显示侵权内容,在NO的时候显示不侵权内容。
143 144
144 注意:关于运营配置的游戏的版本号,我们默认取的是Bulid版本号的值,请注意。 145 注意:关于运营配置的游戏的版本号,我们默认取的是Bulid版本号的值,请注意。
145 146
146 [[LetsGameAPI instance] gameObtainSafeSetInfoWithAppId:@"10056" ChannelId:@"1000" handleCallBack:^(BOOL resultStatus) { 147 [[LetsGameAPI instance] gameObtainSafeSetInfoWithAppId:@"10056" ChannelId:@"1000" handleCallBack:^(BOOL resultStatus) {
147 if (resultStatus) { 148 if (resultStatus) {
148 NSLog(@"YES 侵权"); 149 NSLog(@"YES 侵权");
149 }else{ 150 }else{
150 NSLog(@"NO 不侵权"); 151 NSLog(@"NO 不侵权");
151 } 152 }
152 }]; 153 }];
153 ### 11、横竖屏设置 154 ### 11、横竖屏设置
154 155
155 首先设置SDK默认是横屏,在General->Deployment Info->Device Orientain下,只选择Landscape Left 和 Landscape Right,SDK的界面默认是横屏。 156 首先设置SDK默认是横屏,在General->Deployment Info->Device Orientain下,只选择Landscape Left 和 Landscape Right,SDK的界面默认是横屏。
156 其次如果想使用竖屏的模式,需要在General->Deployment Info->Device Orientain下,只选择Portrait模式,并且需要在AppDelegate中的方法: 157 其次如果想使用竖屏的模式,需要在General->Deployment Info->Device Orientain下,只选择Portrait模式,并且需要在AppDelegate中的方法:
157 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;靠前的位置添加代码设置: 158 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;靠前的位置添加代码设置:
158 159
159 [LetsGameAPI DeviceOrientationIsHorizontal:NO]; 160 [LetsGameAPI DeviceOrientationIsHorizontal:NO];
160 161
161 162
162 163
163 164
164 165
165 ### 12、微信登陆 166 ### 12、微信登陆
166 167
167 首先在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;方法中向微信注册应用 168 首先在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;方法中向微信注册应用
168 //微信登陆 169 //微信登陆
169 [[LetsGameAPI instance] registerAppWeChatWithAppId:@"appId" appKey:@"appKey" Success:^{ 170 [[LetsGameAPI instance] registerAppWeChatWithAppId:@"appId" appKey:@"appKey" Success:^{
170 NSLog(@"注册成功"); 171 NSLog(@"注册成功");
171 } failure:^{ 172 } failure:^{
172 NSLog(@"注册失败"); 173 NSLog(@"注册失败");
173 }]; 174 }];
174 175
ios/GameSDK.framework/Versions/A/GameSDK
No preview for this file type
ios/GameSDK.framework/Versions/A/Headers/LetsGameAPI.h
1 1
2 #import <Foundation/Foundation.h> 2 #import <Foundation/Foundation.h>
3 #import "LSGAccount.h" 3 #import "LSGAccount.h"
4 #import "VKBridgeProtocol.h" 4 #import "VKBridgeProtocol.h"
5 5
6 6
7 typedef void (^LSGLoginSuccBlock)(NSString *userId, NSString *sessionKey, LSGAccountType type); 7 typedef void (^LSGLoginSuccBlock)(NSString *userId, NSString *sessionKey, LSGAccountType type);
8 typedef void (^LSGDismissBlock)(void); 8 typedef void (^LSGDismissBlock)(void);
9 9
10 static BOOL isDisableFB = NO; 10 static BOOL isDisableFB = NO;
11 11
12 static BOOL isEnableVK = NO; 12 static BOOL isEnableVK = NO;
13 13
14 static BOOL isDisableLine = NO; 14 static BOOL isDisableLine = NO;
15 15
16 static BOOL isDisableWeChat = NO; 16 static BOOL isDisableWeChat = NO;
17 17
18 static BOOL isDisableGoogle = NO; 18 static BOOL isDisableGoogle = NO;
19 19
20 static BOOL hiddenLogo = NO; 20 static BOOL hiddenLogo = NO;
21 21
22 //默认横屏 22 //默认横屏
23 static BOOL DeviceOrientationIsHorizontal = YES; 23 static BOOL DeviceOrientationIsHorizontal = YES;
24 24
25 static NSString *version = @"3.4.15"; 25 static NSString *version = @"3.4.16";
26 26
27 @interface LetsGameAPI : NSObject<UIApplicationDelegate> 27 @interface LetsGameAPI : NSObject<UIApplicationDelegate>
28 28
29 @property (nonatomic, strong) NSString *appId; 29 @property (nonatomic, strong) NSString *appId;
30 @property (nonatomic, strong) NSString *appKey; 30 @property (nonatomic, strong) NSString *appKey;
31 @property(nonatomic, strong) NSString *channelId;
31 @property (nonatomic, copy) LSGLoginSuccBlock succBlock; 32 @property (nonatomic, copy) LSGLoginSuccBlock succBlock;
32 @property (nonatomic, copy) LSGDismissBlock dismissBlock; 33 @property (nonatomic, copy) LSGDismissBlock dismissBlock;
33 @property (nonatomic, assign) int isDebug; 34 @property (nonatomic, assign) int isDebug;
34 @property (nonatomic, assign) int decideWebPay; 35 @property (nonatomic, assign) int decideWebPay;
35 @property (nonatomic,retain) id<VKBridgeProtocol> vkBridge; 36 @property (nonatomic,retain) id<VKBridgeProtocol> vkBridge;
36 //@property(nonatomic,strong) NSString *version; 37 //@property(nonatomic,strong) NSString *version;
37 38
38 + (instancetype)instance; 39 + (instancetype)instance;
39 40
40 -(NSString*)version; 41 -(NSString*)version;
41 42
42 - (void)showLoginView; 43 - (void)showLoginView;
43 - (void)showLoginViewInView:(UIView *)view; 44 - (void)showLoginViewInView:(UIView *)view;
44 45
45 +(void)disableFB:(BOOL)isDisable; 46 +(void)disableFB:(BOOL)isDisable;
46 +(void)disableGoogle:(BOOL)isDisable; 47 +(void)disableGoogle:(BOOL)isDisable;
47 +(void)disableWeChat:(BOOL)isDisable; 48 +(void)disableWeChat:(BOOL)isDisable;
48 +(void)disableLine:(BOOL)isDissable; 49 +(void)disableLine:(BOOL)isDissable;
49 +(BOOL)isFBDisable; 50 +(BOOL)isFBDisable;
50 +(BOOL)isVKEnable; 51 +(BOOL)isVKEnable;
51 +(BOOL)isWeChatDisable; 52 +(BOOL)isWeChatDisable;
52 +(BOOL)isGoogleDisable; 53 +(BOOL)isGoogleDisable;
53 +(BOOL)isLineDisable; 54 +(BOOL)isLineDisable;
54 +(void)hiddenLogo:(BOOL)isHidden; 55 +(void)hiddenLogo:(BOOL)isHidden;
55 +(BOOL)isHiddenLogo; 56 +(BOOL)isHiddenLogo;
56 +(void)DeviceOrientationIsHorizontal:(BOOL)isDisable; 57 +(void)DeviceOrientationIsHorizontal:(BOOL)isDisable;
57 +(BOOL)DeviceOrientationIsHorizontal; 58 +(BOOL)DeviceOrientationIsHorizontal;
58 59
59 - (void)logout; 60 - (void)logout;
60 61
61 - (void)hide; 62 - (void)hide;
62 //是否安装微信 63 //是否安装微信
63 -(BOOL)isWeChatInstall; 64 -(BOOL)isWeChatInstall;
64 //向微信注册应用 65 //向微信注册应用
65 -(void)registerAppWeChatWithAppId:(NSString *)appId 66 -(void)registerAppWeChatWithAppId:(NSString *)appId
66 appKey:(NSString *)appKey 67 appKey:(NSString *)appKey
67 Success:(void (^)())success 68 Success:(void (^)())success
68 failure:(void (^)())failure; 69 failure:(void (^)())failure;
69 70
70 - (BOOL)handleOpenURL:(NSURL *)url 71 - (BOOL)handleOpenURL:(NSURL *)url
71 sourceApplication:(NSString *)sourceApplication; 72 sourceApplication:(NSString *)sourceApplication;
72 73
73 -(void)pay:(NSDictionary*) payInfo handleCallBack:(void (^)()) payAccomplistCallback; 74 -(void)pay:(NSDictionary*) payInfo handleCallBack:(void (^)()) payAccomplistCallback;
74 75
75 //-(void)iap:(NSDictionary*) payInfo forUser:(NSString*) uid handleCallback:(void (^)(NSString* orderId)) callback; 76 //-(void)iap:(NSDictionary*) payInfo forUser:(NSString*) uid handleCallback:(void (^)(NSString* orderId)) callback;
76 77
77 -(void)iap:(NSDictionary*) payInfo forUser:(NSString*) uid succCallback:(void (^)(NSString* orderId)) succCallback failCallback:(void (^)(NSString* orderId)) failCallback; 78 -(void)iap:(NSDictionary*) payInfo forUser:(NSString*) uid succCallback:(void (^)(NSString* orderId)) succCallback failCallback:(void (^)(NSString* orderId)) failCallback;
78 79
79 -(void)registeIapObserver; 80 -(void)registeIapObserver;
80 81
81 -(void)decideIsDebug:(int)isDebug; 82 -(void)decideIsDebug:(int)isDebug;
82 83
83 -(void)decideWebPayVersion:(int)decideWebPay; 84 -(void)decideWebPayVersion:(int)decideWebPay;
84 85
85 -(void)obtainAccessTokenSuccess:(void (^)(NSString *tokenString, NSString *refreshTime, NSString *expirationTime))success 86 -(void)obtainAccessTokenSuccess:(void (^)(NSString *tokenString, NSString *refreshTime, NSString *expirationTime))success
86 failure:(void (^)(NSString *errorString))failure; 87 failure:(void (^)(NSString *errorString))failure;
87 88
88 //获取是否展示安全页面,YES展示侵权页面,NO展示非侵权页面 89 //获取是否展示安全页面,YES展示侵权页面,NO展示非侵权页面
89 -(void)gameObtainSafeSetInfoWithAppId:(NSString *)appId 90 -(void)gameObtainSafeSetInfoWithAppId:(NSString *)appId
90 ChannelId:(NSString *)channelId 91 ChannelId:(NSString *)channelId
91 handleCallBack:(void (^)(BOOL resultStatus))callBack; 92 handleCallBack:(void (^)(BOOL resultStatus))callBack;
92 @end 93 @end
93 94
No preview for this file type
ios/GameSDKDemo/GameSDKDemo.xcodeproj/project.xcworkspace/xcuserdata/yanglele.xcuserdatad/UserInterfaceState.xcuserstate
No preview for this file type
ios/GameSDKDemo/letsgameDemo/LSGMainViewController.m
1 // 1 //
2 // LSGMainViewController.m 2 // LSGMainViewController.m
3 // letsgameDemo 3 // letsgameDemo
4 // 4 //
5 // Created by zhy on 14-5-24. 5 // Created by zhy on 14-5-24.
6 // 6 //
7 // 7 //
8 8
9 #import "LSGMainViewController.h" 9 #import "LSGMainViewController.h"
10 #import "LetsGameAPI.h" 10 #import "LetsGameAPI.h"
11 #import "VKBridge.h" 11 #import "VKBridge.h"
12 12
13 13
14 @interface LSGMainViewController () 14 @interface LSGMainViewController ()
15 15
16 @property (nonatomic, strong) UILabel *resultLabel; 16 @property (nonatomic, strong) UILabel *resultLabel;
17 17
18 @property(nonatomic,strong) UIButton *vkActivityShareBtn; 18 @property(nonatomic,strong) UIButton *vkActivityShareBtn;
19 19
20 @property(nonatomic,copy) NSString *sessionKey; 20 @property(nonatomic,copy) NSString *sessionKey;
21 @end 21 @end
22 22
23 @implementation LSGMainViewController 23 @implementation LSGMainViewController
24 24
25 - (void)loadView { 25 - (void)loadView {
26 [super loadView]; 26 [super loadView];
27 NSLog(@"i come in"); 27 NSLog(@"i come in");
28 self.view.backgroundColor = [UIColor whiteColor]; 28 self.view.backgroundColor = [UIColor whiteColor];
29 // self.view.backgroundColor = [UIColor blackColor]; 29 // self.view.backgroundColor = [UIColor blackColor];
30 30
31 UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(110, 40, 100, 30)]; 31 UIButton *btn = [[UIButton alloc] initWithFrame:CGRectMake(110, 40, 100, 30)];
32 btn.backgroundColor = [UIColor orangeColor]; 32 btn.backgroundColor = [UIColor orangeColor];
33 [btn setTitle:@"测试入口" forState:UIControlStateNormal]; 33 [btn setTitle:@"测试入口" forState:UIControlStateNormal];
34 [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 34 [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
35 btn.titleLabel.font = [UIFont systemFontOfSize:15]; 35 btn.titleLabel.font = [UIFont systemFontOfSize:15];
36 [btn addTarget:self action:@selector(onClickTest) forControlEvents:UIControlEventTouchUpInside]; 36 [btn addTarget:self action:@selector(onClickTest) forControlEvents:UIControlEventTouchUpInside];
37 [self.view addSubview:btn]; 37 [self.view addSubview:btn];
38 38
39 39
40 40
41 UIButton *bindtn = [[UIButton alloc] initWithFrame:CGRectMake(110, 100, 100, 30)]; 41 UIButton *bindtn = [[UIButton alloc] initWithFrame:CGRectMake(110, 100, 100, 30)];
42 bindtn.backgroundColor = [UIColor orangeColor]; 42 bindtn.backgroundColor = [UIColor orangeColor];
43 [bindtn setTitle:@"退出账号" forState:UIControlStateNormal]; 43 [bindtn setTitle:@"退出账号" forState:UIControlStateNormal];
44 [bindtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 44 [bindtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
45 bindtn.titleLabel.font = [UIFont systemFontOfSize:15]; 45 bindtn.titleLabel.font = [UIFont systemFontOfSize:15];
46 [bindtn addTarget:self action:@selector(onLogoutTest) forControlEvents:UIControlEventTouchUpInside]; 46 [bindtn addTarget:self action:@selector(onLogoutTest) forControlEvents:UIControlEventTouchUpInside];
47 [self.view addSubview:bindtn]; 47 [self.view addSubview:bindtn];
48 48
49 UIButton *payBtn = [[UIButton alloc] initWithFrame:CGRectMake(110, 160, 100, 30)]; 49 UIButton *payBtn = [[UIButton alloc] initWithFrame:CGRectMake(110, 160, 100, 30)];
50 payBtn.backgroundColor = [UIColor orangeColor]; 50 payBtn.backgroundColor = [UIColor orangeColor];
51 [payBtn setTitle:@"支付" forState:UIControlStateNormal]; 51 [payBtn setTitle:@"支付" forState:UIControlStateNormal];
52 [payBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 52 [payBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
53 payBtn.titleLabel.font = [UIFont systemFontOfSize:15]; 53 payBtn.titleLabel.font = [UIFont systemFontOfSize:15];
54 [payBtn addTarget:self action:@selector(onPayTest) forControlEvents:UIControlEventTouchUpInside]; 54 [payBtn addTarget:self action:@selector(onPayTest) forControlEvents:UIControlEventTouchUpInside];
55 [self.view addSubview:payBtn]; 55 [self.view addSubview:payBtn];
56 56
57 UIButton *iapBtn = [[UIButton alloc] initWithFrame:CGRectMake(110, 220, 100, 30)]; 57 UIButton *iapBtn = [[UIButton alloc] initWithFrame:CGRectMake(110, 220, 100, 30)];
58 iapBtn.backgroundColor = [UIColor orangeColor]; 58 iapBtn.backgroundColor = [UIColor orangeColor];
59 [iapBtn setTitle:@"IAP" forState:UIControlStateNormal]; 59 [iapBtn setTitle:@"IAP" forState:UIControlStateNormal];
60 [iapBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; 60 [iapBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
61 iapBtn.titleLabel.font = [UIFont systemFontOfSize:15]; 61 iapBtn.titleLabel.font = [UIFont systemFontOfSize:15];
62 [iapBtn addTarget:self action:@selector(onIapTest) forControlEvents:UIControlEventTouchUpInside]; 62 [iapBtn addTarget:self action:@selector(onIapTest) forControlEvents:UIControlEventTouchUpInside];
63 [self.view addSubview:iapBtn]; 63 [self.view addSubview:iapBtn];
64 64
65 } 65 }
66 66
67 - (UILabel *)resultLabel { 67 - (UILabel *)resultLabel {
68 if (!_resultLabel) { 68 if (!_resultLabel) {
69 _resultLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.view.frame) - 90, self.view.frame.size.width, 60)]; 69 _resultLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.view.frame) - 90, self.view.frame.size.width, 60)];
70 _resultLabel.backgroundColor = [UIColor clearColor]; 70 _resultLabel.backgroundColor = [UIColor clearColor];
71 _resultLabel.textAlignment = NSTextAlignmentCenter; 71 _resultLabel.textAlignment = NSTextAlignmentCenter;
72 _resultLabel.textColor = [UIColor redColor]; 72 _resultLabel.textColor = [UIColor redColor];
73 _resultLabel.font = [UIFont systemFontOfSize:15]; 73 _resultLabel.font = [UIFont systemFontOfSize:15];
74 _resultLabel.numberOfLines = 4; 74 _resultLabel.numberOfLines = 4;
75 _resultLabel.lineBreakMode = NSLineBreakByWordWrapping; 75 _resultLabel.lineBreakMode = NSLineBreakByWordWrapping;
76 [self.view addSubview:_resultLabel]; 76 [self.view addSubview:_resultLabel];
77 } 77 }
78 78
79 return _resultLabel; 79 return _resultLabel;
80 } 80 }
81 81
82 82
83 - (void)onClickTest { 83 - (void)onClickTest {
84 84
85 [LetsGameAPI instance].appId = @"100";//@"100";//10047 85 [LetsGameAPI instance].appId = @"100";//@"100";//10047
86 [LetsGameAPI instance].appKey = @"f899139df5e1059396431415e770c6dd";//@"f899139df5e1059396431415e770c6dd";//eccd9f7dc92858b741132fda313130cf 86 [LetsGameAPI instance].appKey = @"f899139df5e1059396431415e770c6dd";//@"f899139df5e1059396431415e770c6dd";//eccd9f7dc92858b741132fda313130cf
87 [LetsGameAPI instance].channelId = @"10010";
87 [LetsGameAPI hiddenLogo:YES]; 88 [LetsGameAPI hiddenLogo:YES];
88 // [LetsGameAPI disableFB:YES]; 89 // [LetsGameAPI disableFB:YES];
89 // [LetsGameAPI disableGoogle:YES]; 90 // [LetsGameAPI disableGoogle:YES];
90 // [LetsGameAPI disableLine:YES]; 91 // [LetsGameAPI disableLine:YES];
91 // [LetsGameAPI disableWeChat:YES]; 92 // [LetsGameAPI disableWeChat:YES];
92 NSLog(@"sdk version:%@",[[LetsGameAPI instance] version]); 93 NSLog(@"sdk version:%@",[[LetsGameAPI instance] version]);
93 //启用vk登录 94 //启用vk登录
94 VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"]; 95 VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"];
95 [LetsGameAPI instance].vkBridge = vkBridge; 96 [LetsGameAPI instance].vkBridge = vkBridge;
96 97
97 [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) { 98 [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) {
98 self.sessionKey = sessionKey; 99 self.sessionKey = sessionKey;
99 self.resultLabel.text = [NSString stringWithFormat:@"login succ: userId = %@, sessionKey = %@, accountType = %ld", userId, sessionKey, type]; 100 self.resultLabel.text = [NSString stringWithFormat:@"login succ: userId = %@, sessionKey = %@, accountType = %ld", userId, sessionKey, type];
100 }; 101 };
101 [LetsGameAPI instance].dismissBlock = ^() { 102 [LetsGameAPI instance].dismissBlock = ^() {
102 self.resultLabel.text = @"dismiss without login"; 103 self.resultLabel.text = @"dismiss without login";
103 }; 104 };
104 105
105 [[LetsGameAPI instance] showLoginView]; 106 [[LetsGameAPI instance] showLoginView];
106 } 107 }
107 108
108 109
109 - (void)onLogoutTest { 110 - (void)onLogoutTest {
110 [LetsGameAPI instance].appId = @"10056"; 111 [LetsGameAPI instance].appId = @"10056";
111 [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21"; 112 [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21";
112 [[LetsGameAPI instance] logout]; 113 [[LetsGameAPI instance] logout];
113 114
114 } 115 }
115 116
116 -(void)onPayTest{ 117 -(void)onPayTest{
117 [LetsGameAPI instance].appId = @"10056";//10022 118 [LetsGameAPI instance].appId = @"10056";//10022
118 [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21";//93a27b0bd99bac3e68a440b48aa421ab 119 [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21";//93a27b0bd99bac3e68a440b48aa421ab
119 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; 120 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary];
120 [payInfo setValue:@"100" forKey:@"serverId"]; 121 [payInfo setValue:@"100" forKey:@"serverId"];
121 [payInfo setValue:@"10010" forKey:@"roleId"]; 122 [payInfo setValue:@"10010" forKey:@"roleId"];
122 [payInfo setValue:@"1000" forKey:@"channelId"]; 123 [payInfo setValue:@"1000" forKey:@"channelId"];
123 [payInfo setValue:@"10" forKey:@"amount"]; 124 [payInfo setValue:@"10" forKey:@"amount"];
124 [payInfo setValue:@"ios demo" forKey:@"extraInfo"]; 125 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];
125 [payInfo setValue:@"test" forKey:@"product"]; 126 [payInfo setValue:@"test" forKey:@"product"];
126 [payInfo setValue:@"76c17cc68ff9f7f40bd3d096ccc5600a" forKey:@"sessionKey"]; //self.sessionKey 127 [payInfo setValue:@"76c17cc68ff9f7f40bd3d096ccc5600a" forKey:@"sessionKey"]; //self.sessionKey
127 [[LetsGameAPI instance] pay:payInfo handleCallBack:^{ 128 [[LetsGameAPI instance] pay:payInfo handleCallBack:^{
128 NSLog(@"第三方支付完成"); 129 NSLog(@"第三方支付完成");
129 }]; 130 }];
130 } 131 }
131 132
132 -(void)onIapTest{ 133 -(void)onIapTest{
133 [LetsGameAPI instance].appId = @"10056"; 134 [LetsGameAPI instance].appId = @"10056";
134 [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21"; 135 [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21";
135 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; 136 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary];
136 [payInfo setValue:@"5001" forKey:@"serverId"]; 137 [payInfo setValue:@"5001" forKey:@"serverId"];
137 [payInfo setValue:@"10010" forKey:@"roleId"]; 138 [payInfo setValue:@"10010" forKey:@"roleId"];
138 [payInfo setValue:@"1000" forKey:@"channelId"]; 139 [payInfo setValue:@"1000" forKey:@"channelId"];
139 [payInfo setValue:@"10" forKey:@"amount"]; 140 [payInfo setValue:@"10" forKey:@"amount"];
140 [payInfo setValue:@"ios demo" forKey:@"extraInfo"]; 141 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];
141 [payInfo setValue:@"test.product.1" forKey:@"product"]; 142 [payInfo setValue:@"test.product.1" forKey:@"product"];
142 [[LetsGameAPI instance] iap:payInfo forUser:@"" succCallback:^(NSString *orderId) { 143 [[LetsGameAPI instance] iap:payInfo forUser:@"" succCallback:^(NSString *orderId) {
143 //注意测试仅仅是通知客户端成功,但是还需要向服务器请求验证是否成功,以服务端验证为准 144 //注意测试仅仅是通知客户端成功,但是还需要向服务器请求验证是否成功,以服务端验证为准
144 NSLog(@"IAP completed orderId of Gumptech:%@",orderId); 145 NSLog(@"IAP completed orderId of Gumptech:%@",orderId);
145 } failCallback:^(NSString *orderId) { 146 } failCallback:^(NSString *orderId) {
146 NSLog(@"IAP file orderId of Gumptech:%@",orderId); 147 NSLog(@"IAP file orderId of Gumptech:%@",orderId);
147 }]; 148 }];
148 } 149 }
149 150
150 151
151 - (BOOL)shouldAutorotate { 152 - (BOOL)shouldAutorotate {
152 return YES; 153 return YES;
153 } 154 }
154 155
155 -(UIInterfaceOrientationMask)supportedInterfaceOrientations{ 156 -(UIInterfaceOrientationMask)supportedInterfaceOrientations{
156 return UIInterfaceOrientationMaskAll; 157 return UIInterfaceOrientationMaskAll;
157 } 158 }
158 159
159 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 160 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
160 return YES; 161 return YES;
161 } 162 }
162 163
163 @end 164 @end
164 165