Commit c312dc017fb18e383a50ec7932346b314f0924bf

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

第三方支付关闭按钮一直存在

Showing 8 changed files with 71 additions and 6 deletions Inline Diff

1 # Gump IOS SDK使用文档 1 # Gump IOS SDK使用文档
2 2
3 3
4 接入手册 4 接入手册
5 V 3.4.16 5 V 3.4.18
6 2017年3月2日 6 2018年3月6日
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 [LetsGameAPI instance].channelId = @"100"; //设置channelId
46 46
47 //启用vk的代码,需要填入vk appId,若不接入vk,可以忽略 47 //启用vk的代码,需要填入vk appId,若不接入vk,可以忽略
48 //VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"]; 48 //VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"];
49 //[LetsGameAPI instance].vkBridge = vkBridge; 49 //[LetsGameAPI instance].vkBridge = vkBridge;
50 50
51 //隐藏fb登录 51 //隐藏fb登录
52 [LetsGameAPI disableFB:YES]; 52 [LetsGameAPI disableFB:YES];
53 //隐藏Google登录 53 //隐藏Google登录
54 [LetsGameAPI disableGoogle:YES]; 54 [LetsGameAPI disableGoogle:YES];
55 //隐藏gumptech的logo 55 //隐藏gumptech的logo
56 [LetsGameAPI hiddenLogo:YES]; 56 [LetsGameAPI hiddenLogo:YES];
57 //隐藏line登录 57 //隐藏line登录
58 [LetsGameAPI disableLine:YES]; 58 [LetsGameAPI disableLine:YES];
59 //隐藏wechat登录 59 //隐藏wechat登录
60 [LetsGameAPI disableWeChat:YES]; 60 [LetsGameAPI disableWeChat:YES];
61 61
62 [[LetsGameAPI instance] showLoginView]; // 弹出登录页面 62 [[LetsGameAPI instance] showLoginView]; // 弹出登录页面
63 63
64 // 登录成功回调 64 // 登录成功回调
65 [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) { 65 [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) {
66 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]);
67 }; 67 };
68 68
69 // 登录失败回调 69 // 登录失败回调
70 [LetsGameAPI instance].dismissBlock = ^() { 70 [LetsGameAPI instance].dismissBlock = ^() {
71 NSLog(@"dismiss without login"); 71 NSLog(@"dismiss without login");
72 }; 72 };
73 73
74 ### 5、登录注销 74 ### 5、登录注销
75 注销接口只要设置过appId和appKey之后就不需要设置了,注销完成之后会回到登录界面。FB登录回到登录页面,Gump登录或者游客登录回到登录框。 75 注销接口只要设置过appId和appKey之后就不需要设置了,注销完成之后会回到登录界面。FB登录回到登录页面,Gump登录或者游客登录回到登录框。
76 76
77 [LetsGameAPI instance].appId = @"100";//设置appId 77 [LetsGameAPI instance].appId = @"100";//设置appId
78 [LetsGameAPI instance].appKey = @"100";//设置appkey 78 [LetsGameAPI instance].appKey = @"100";//设置appkey
79 [[LetsGameAPI instance] logout]; //注销 79 [[LetsGameAPI instance] logout]; //注销
80 80
81 81
82 ### 6、第三方支付 82 ### 6、第三方支付
83 [LetsGameAPI instance].appId = @"10022"; 83 [LetsGameAPI instance].appId = @"10022";
84 [LetsGameAPI instance].appKey = @"f899139df5e1059396431415e770c6dd"; 84 [LetsGameAPI instance].appKey = @"f899139df5e1059396431415e770c6dd";
85 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; 85 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary];
86 [payInfo setValue:@"5001" forKey:@"serverId"];//服务器id,必传参数 86 [payInfo setValue:@"5001" forKey:@"serverId"];//服务器id,必传参数
87 [payInfo setValue:@"10010" forKey:@"roleId"];//用户角色id 87 [payInfo setValue:@"10010" forKey:@"roleId"];//用户角色id
88 [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id 88 [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id
89 [payInfo setValue:@"10" forKey:@"amount"];//金额 89 [payInfo setValue:@"10" forKey:@"amount"];//金额
90 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//外部订单信息 90 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//外部订单信息
91 [payInfo setValue:@"元宝" forKey:@"product"];//物品信息 91 [payInfo setValue:@"元宝" forKey:@"product"];//物品信息
92 [payInfo setValue:self.sessionKey forKey:@"sessionKey"];//登录成功的sessionKey 92 [payInfo setValue:self.sessionKey forKey:@"sessionKey"];//登录成功的sessionKey
93 [[LetsGameAPI instance] pay:payInfo handleCallBack:^{ 93 [[LetsGameAPI instance] pay:payInfo handleCallBack:^{
94 //第三方支付完成时的回调(包括支付成功和支付失败,除了支付过程中取消的),取消的不会有回调 94 //第三方支付完成时的回调(包括支付成功和支付失败,除了支付过程中取消的),取消的不会有回调
95 NSLog(@"第三方支付完成"); 95 NSLog(@"第三方支付完成");
96 }]]; 96 }]];
97 97
98 ### 7、IAP支付 98 ### 7、IAP支付
99 若要使用apple IAP支付,需要在AppDelegate的application: didFinishLaunchingWithOptions:方法内注册iap observer,使用如下方法 99 若要使用apple IAP支付,需要在AppDelegate的application: didFinishLaunchingWithOptions:方法内注册iap observer,使用如下方法
100 100
101 [[LetsGameAPI instance] registeIapObserver]; 101 [[LetsGameAPI instance] registeIapObserver];
102 具体调用iap支付的方法如下: 102 具体调用iap支付的方法如下:
103 103
104 [LetsGameAPI instance].appId = @"10022"; 104 [LetsGameAPI instance].appId = @"10022";
105 [LetsGameAPI instance].appKey = @"93a27b0bd99bac3e68a440b48aa421ab"; 105 [LetsGameAPI instance].appKey = @"93a27b0bd99bac3e68a440b48aa421ab";
106 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; 106 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary];
107 [payInfo setValue:@"5001" forKey:@"serverId"];//当前用户所在的服务器Id 107 [payInfo setValue:@"5001" forKey:@"serverId"];//当前用户所在的服务器Id
108 [payInfo setValue:@"10010" forKey:@"roleId"];//当前用户的角色id 108 [payInfo setValue:@"10010" forKey:@"roleId"];//当前用户的角色id
109 [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id,用于统计 109 [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id,用于统计
110 [payInfo setValue:@"10" forKey:@"amount"];//对应支付项的支付金额,实际支付金额以itunes配置为准 110 [payInfo setValue:@"10" forKey:@"amount"];//对应支付项的支付金额,实际支付金额以itunes配置为准
111 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//扩展信息,可以游戏自定义,建议传自有订单号 111 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//扩展信息,可以游戏自定义,建议传自有订单号
112 [payInfo setValue:@"test.product.1" forKey:@"product"];//itunes 后台配置的对应支付项的productId 112 [payInfo setValue:@"test.product.1" forKey:@"product"];//itunes 后台配置的对应支付项的productId
113 [[LetsGameAPI instance] iap:payInfo forUser:@"" succCallback:^(NSString *orderId) { 113 [[LetsGameAPI instance] iap:payInfo forUser:@"" succCallback:^(NSString *orderId) {
114 //此处的回调表明支付已经完成,但此时支付不一定成功,需要服务端验证支付结果 114 //此处的回调表明支付已经完成,但此时支付不一定成功,需要服务端验证支付结果
115 //orderId为gump生成的订单号,此订单号可以在gump server查询此笔支付是否成功 115 //orderId为gump生成的订单号,此订单号可以在gump server查询此笔支付是否成功
116 NSLog(@"IAP completed orderId of Gumptech:%@",orderId); 116 NSLog(@"IAP completed orderId of Gumptech:%@",orderId);
117 } failCallback:^(NSString *orderId) { 117 } failCallback:^(NSString *orderId) {
118 //支付失败 118 //支付失败
119 NSLog(@"IAP file orderId of Gumptech:%@",orderId); 119 NSLog(@"IAP file orderId of Gumptech:%@",orderId);
120 }]; 120 }];
121 ### 8、token的获取 121 ### 8、token的获取
122 FB登录之后会产生token并自动登录,需要如果需要token的话,需要自己调用接口获取。 122 FB登录之后会产生token并自动登录,需要如果需要token的话,需要自己调用接口获取。
123 123
124 //tokenString:token字符串 124 //tokenString:token字符串
125 //refreshTime:refreshTime token最后刷新的时间,即获取的token的时间 125 //refreshTime:refreshTime token最后刷新的时间,即获取的token的时间
126 //expirationTime:expirationTime token最后的有效时间 126 //expirationTime:expirationTime token最后的有效时间
127 [[LetsGameAPI instance] obtainAccessTokenSuccess:^(NSString *tokenString, NSString *refreshTime, NSString *expirationTime) { 127 [[LetsGameAPI instance] obtainAccessTokenSuccess:^(NSString *tokenString, NSString *refreshTime, NSString *expirationTime) {
128 NSLog(@"tokenString %@, refreshTime %@, expirationTime %@", tokenString, refreshTime, expirationTime); 128 NSLog(@"tokenString %@, refreshTime %@, expirationTime %@", tokenString, refreshTime, expirationTime);
129 } failure:^(NSString *errorString) { 129 } failure:^(NSString *errorString) {
130 NSLog(@"get token faile"); 130 NSLog(@"get token faile");
131 }]; 131 }];
132 132
133 133
134 ### 9、第三方支付版本 134 ### 9、第三方支付版本
135 第三方支付,分成两个版本:没有gump币和有gump币,不设置时默认为带gump币版本,如果使用不带gump币的版本如下设置: 135 第三方支付,分成两个版本:没有gump币和有gump币,不设置时默认为带gump币版本,如果使用不带gump币的版本如下设置:
136 136
137 需要在 application:didFinishLaunchingWithOptions方法中添加: 137 需要在 application:didFinishLaunchingWithOptions方法中添加:
138 138
139 [[LetsGameAPI instance] decideWebToVersion:1] 139 [[LetsGameAPI instance] decideWebToVersion:1]
140 140
141 141
142 ### 10、关于侵权还是侵权的接口显示 142 ### 10、关于侵权还是侵权的接口显示
143 运营在后台配置此包名和版本在什么时候显示侵权内容还是不侵权内容,此接口调用需要在游戏才开始加载的时候调用,返回值是YES的时候显示侵权内容,在NO的时候显示不侵权内容。 143 运营在后台配置此包名和版本在什么时候显示侵权内容还是不侵权内容,此接口调用需要在游戏才开始加载的时候调用,返回值是YES的时候显示侵权内容,在NO的时候显示不侵权内容。
144 144
145 注意:关于运营配置的游戏的版本号,我们默认取的是Bulid版本号的值,请注意。 145 注意:关于运营配置的游戏的版本号,我们默认取的是Bulid版本号的值,请注意。
146 146
147 [[LetsGameAPI instance] gameObtainSafeSetInfoWithAppId:@"10056" ChannelId:@"1000" handleCallBack:^(BOOL resultStatus) { 147 [[LetsGameAPI instance] gameObtainSafeSetInfoWithAppId:@"10056" ChannelId:@"1000" handleCallBack:^(BOOL resultStatus) {
148 if (resultStatus) { 148 if (resultStatus) {
149 NSLog(@"YES 侵权"); 149 NSLog(@"YES 侵权");
150 }else{ 150 }else{
151 NSLog(@"NO 不侵权"); 151 NSLog(@"NO 不侵权");
152 } 152 }
153 }]; 153 }];
154 ### 11、横竖屏设置 154 ### 11、横竖屏设置
155 155
156 首先设置SDK默认是横屏,在General->Deployment Info->Device Orientain下,只选择Landscape Left 和 Landscape Right,SDK的界面默认是横屏。 156 首先设置SDK默认是横屏,在General->Deployment Info->Device Orientain下,只选择Landscape Left 和 Landscape Right,SDK的界面默认是横屏。
157 其次如果想使用竖屏的模式,需要在General->Deployment Info->Device Orientain下,只选择Portrait模式,并且需要在AppDelegate中的方法: 157 其次如果想使用竖屏的模式,需要在General->Deployment Info->Device Orientain下,只选择Portrait模式,并且需要在AppDelegate中的方法:
158 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;靠前的位置添加代码设置: 158 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;靠前的位置添加代码设置:
159 159
160 [LetsGameAPI DeviceOrientationIsHorizontal:NO]; 160 [LetsGameAPI DeviceOrientationIsHorizontal:NO];
161 161
162 162
163 163
164 164
165 165
166 ### 12、微信登陆 166 ### 12、微信登陆
167 167
168 首先在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;方法中向微信注册应用 168 首先在- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;方法中向微信注册应用
169 //微信登陆 169 //微信登陆
170 [[LetsGameAPI instance] registerAppWeChatWithAppId:@"appId" appKey:@"appKey" Success:^{ 170 [[LetsGameAPI instance] registerAppWeChatWithAppId:@"appId" appKey:@"appKey" Success:^{
171 NSLog(@"注册成功"); 171 NSLog(@"注册成功");
172 } failure:^{ 172 } failure:^{
173 NSLog(@"注册失败"); 173 NSLog(@"注册失败");
174 }]; 174 }];
175 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.17"; 25 static NSString *version = @"3.4.18";
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, strong) NSString *channelId;
32 @property (nonatomic, copy) LSGLoginSuccBlock succBlock; 32 @property (nonatomic, copy) LSGLoginSuccBlock succBlock;
33 @property (nonatomic, copy) LSGDismissBlock dismissBlock; 33 @property (nonatomic, copy) LSGDismissBlock dismissBlock;
34 @property (nonatomic, assign) int isDebug; 34 @property (nonatomic, assign) int isDebug;
35 @property (nonatomic, assign) int decideWebTo; 35 @property (nonatomic, assign) int decideWebTo;
36 @property (nonatomic,retain) id<VKBridgeProtocol> vkBridge; 36 @property (nonatomic,retain) id<VKBridgeProtocol> vkBridge;
37 //@property(nonatomic,strong) NSString *version; 37 //@property(nonatomic,strong) NSString *version;
38 38
39 + (instancetype)instance; 39 + (instancetype)instance;
40 40
41 -(NSString*)version; 41 -(NSString*)version;
42 42
43 - (void)showLoginView; 43 - (void)showLoginView;
44 - (void)showLoginViewInView:(UIView *)view; 44 - (void)showLoginViewInView:(UIView *)view;
45 45
46 +(void)disableFB:(BOOL)isDisable; 46 +(void)disableFB:(BOOL)isDisable;
47 +(void)disableGoogle:(BOOL)isDisable; 47 +(void)disableGoogle:(BOOL)isDisable;
48 +(void)disableWeChat:(BOOL)isDisable; 48 +(void)disableWeChat:(BOOL)isDisable;
49 +(void)disableLine:(BOOL)isDissable; 49 +(void)disableLine:(BOOL)isDissable;
50 +(BOOL)isFBDisable; 50 +(BOOL)isFBDisable;
51 +(BOOL)isVKEnable; 51 +(BOOL)isVKEnable;
52 +(BOOL)isWeChatDisable; 52 +(BOOL)isWeChatDisable;
53 +(BOOL)isGoogleDisable; 53 +(BOOL)isGoogleDisable;
54 +(BOOL)isLineDisable; 54 +(BOOL)isLineDisable;
55 +(void)hiddenLogo:(BOOL)isHidden; 55 +(void)hiddenLogo:(BOOL)isHidden;
56 +(BOOL)isHiddenLogo; 56 +(BOOL)isHiddenLogo;
57 +(void)DeviceOrientationIsHorizontal:(BOOL)isDisable; 57 +(void)DeviceOrientationIsHorizontal:(BOOL)isDisable;
58 +(BOOL)DeviceOrientationIsHorizontal; 58 +(BOOL)DeviceOrientationIsHorizontal;
59 59
60 - (void)logout; 60 - (void)logout;
61 61
62 - (void)hide; 62 - (void)hide;
63 //是否安装微信 63 //是否安装微信
64 -(BOOL)isWeChatInstall; 64 -(BOOL)isWeChatInstall;
65 //向微信注册应用 65 //向微信注册应用
66 -(void)registerAppWeChatWithAppId:(NSString *)appId 66 -(void)registerAppWeChatWithAppId:(NSString *)appId
67 appKey:(NSString *)appKey 67 appKey:(NSString *)appKey
68 Success:(void (^)())success 68 Success:(void (^)())success
69 failure:(void (^)())failure; 69 failure:(void (^)())failure;
70 70
71 - (BOOL)handleOpenURL:(NSURL *)url 71 - (BOOL)handleOpenURL:(NSURL *)url
72 sourceApplication:(NSString *)sourceApplication; 72 sourceApplication:(NSString *)sourceApplication;
73 73
74 -(void)pay:(NSDictionary*) payInfo handleCallBack:(void (^)()) payAccomplistCallback; 74 -(void)pay:(NSDictionary*) payInfo handleCallBack:(void (^)()) payAccomplistCallback;
75 75
76 //-(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;
77 77
78 -(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;
79 79
80 -(void)registeIapObserver; 80 -(void)registeIapObserver;
81 81
82 -(void)decideIsDebug:(int)isDebug; 82 -(void)decideIsDebug:(int)isDebug;
83 83
84 -(void)decideWebToVersion:(int)decideWebTo; 84 -(void)decideWebToVersion:(int)decideWebTo;
85 85
86 -(void)obtainAccessTokenSuccess:(void (^)(NSString *tokenString, NSString *refreshTime, NSString *expirationTime))success 86 -(void)obtainAccessTokenSuccess:(void (^)(NSString *tokenString, NSString *refreshTime, NSString *expirationTime))success
87 failure:(void (^)(NSString *errorString))failure; 87 failure:(void (^)(NSString *errorString))failure;
88 88
89 //获取是否展示安全页面,YES展示侵权页面,NO展示非侵权页面 89 //获取是否展示安全页面,YES展示侵权页面,NO展示非侵权页面
90 -(void)gameObtainSafeSetInfoWithAppId:(NSString *)appId 90 -(void)gameObtainSafeSetInfoWithAppId:(NSString *)appId
91 ChannelId:(NSString *)channelId 91 ChannelId:(NSString *)channelId
92 handleCallBack:(void (^)(BOOL resultStatus))callBack; 92 handleCallBack:(void (^)(BOOL resultStatus))callBack;
93 @end 93 @end
94 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/Images.xcassets/Contents.json
File was created 1 {
2 "info" : {
3 "version" : 1,
4 "author" : "xcode"
5 }
6 }
ios/GameSDKDemo/letsgameDemo/Images.xcassets/LaunchImage.launchimage/Contents.json
1 { 1 {
2 "images" : [ 2 "images" : [
3 { 3 {
4 "orientation" : "portrait", 4 "orientation" : "portrait",
5 "idiom" : "iphone", 5 "idiom" : "iphone",
6 "extent" : "full-screen", 6 "extent" : "full-screen",
7 "minimum-system-version" : "11.0",
8 "subtype" : "2436h",
9 "scale" : "3x"
10 },
11 {
12 "orientation" : "landscape",
13 "idiom" : "iphone",
14 "extent" : "full-screen",
15 "minimum-system-version" : "11.0",
16 "subtype" : "2436h",
17 "scale" : "3x"
18 },
19 {
20 "orientation" : "portrait",
21 "idiom" : "iphone",
22 "extent" : "full-screen",
23 "minimum-system-version" : "8.0",
24 "subtype" : "736h",
25 "scale" : "3x"
26 },
27 {
28 "orientation" : "landscape",
29 "idiom" : "iphone",
30 "extent" : "full-screen",
31 "minimum-system-version" : "8.0",
32 "subtype" : "736h",
33 "scale" : "3x"
34 },
35 {
36 "orientation" : "portrait",
37 "idiom" : "iphone",
38 "extent" : "full-screen",
39 "minimum-system-version" : "8.0",
40 "subtype" : "667h",
41 "scale" : "2x"
42 },
43 {
44 "orientation" : "portrait",
45 "idiom" : "iphone",
46 "extent" : "full-screen",
7 "minimum-system-version" : "7.0", 47 "minimum-system-version" : "7.0",
8 "scale" : "2x" 48 "scale" : "2x"
9 }, 49 },
10 { 50 {
11 "orientation" : "portrait", 51 "orientation" : "portrait",
12 "idiom" : "iphone", 52 "idiom" : "iphone",
13 "subtype" : "retina4",
14 "extent" : "full-screen", 53 "extent" : "full-screen",
15 "minimum-system-version" : "7.0", 54 "minimum-system-version" : "7.0",
55 "subtype" : "retina4",
56 "scale" : "2x"
57 },
58 {
59 "orientation" : "portrait",
60 "idiom" : "iphone",
61 "extent" : "full-screen",
62 "scale" : "1x"
63 },
64 {
65 "orientation" : "portrait",
66 "idiom" : "iphone",
67 "extent" : "full-screen",
68 "scale" : "2x"
69 },
70 {
71 "orientation" : "portrait",
72 "idiom" : "iphone",
73 "extent" : "full-screen",
74 "subtype" : "retina4",
16 "scale" : "2x" 75 "scale" : "2x"
17 } 76 }
18 ], 77 ],
19 "info" : { 78 "info" : {
20 "version" : 1, 79 "version" : 1,
21 "author" : "xcode" 80 "author" : "xcode"
22 } 81 }
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 instance].channelId = @"10010";
88 [LetsGameAPI hiddenLogo:YES]; 88 [LetsGameAPI hiddenLogo:YES];
89 // [LetsGameAPI disableFB:YES]; 89 // [LetsGameAPI disableFB:YES];
90 // [LetsGameAPI disableGoogle:YES]; 90 // [LetsGameAPI disableGoogle:YES];
91 // [LetsGameAPI disableLine:YES]; 91 // [LetsGameAPI disableLine:YES];
92 // [LetsGameAPI disableWeChat:YES]; 92 // [LetsGameAPI disableWeChat:YES];
93 NSLog(@"sdk version:%@",[[LetsGameAPI instance] version]); 93 NSLog(@"sdk version:%@",[[LetsGameAPI instance] version]);
94 //启用vk登录 94 //启用vk登录
95 VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"]; 95 VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"];
96 [LetsGameAPI instance].vkBridge = vkBridge; 96 [LetsGameAPI instance].vkBridge = vkBridge;
97 97
98 [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) { 98 [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) {
99 self.sessionKey = sessionKey; 99 self.sessionKey = sessionKey;
100 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];
101 }; 101 };
102 [LetsGameAPI instance].dismissBlock = ^() { 102 [LetsGameAPI instance].dismissBlock = ^() {
103 self.resultLabel.text = @"dismiss without login"; 103 self.resultLabel.text = @"dismiss without login";
104 }; 104 };
105 105
106 [[LetsGameAPI instance] showLoginView]; 106 [[LetsGameAPI instance] showLoginView];
107 } 107 }
108 108
109 109
110 - (void)onLogoutTest { 110 - (void)onLogoutTest {
111 [LetsGameAPI instance].appId = @"10056"; 111 [LetsGameAPI instance].appId = @"10056";
112 [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21"; 112 [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21";
113 [[LetsGameAPI instance] logout]; 113 [[LetsGameAPI instance] logout];
114 114
115 } 115 }
116 116
117 -(void)onPayTest{ 117 -(void)onPayTest{
118 [LetsGameAPI instance].appId = @"10056";//10022 118 [LetsGameAPI instance].appId = @"10022";//@"10056";//10022
119 [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21";//93a27b0bd99bac3e68a440b48aa421ab 119 [LetsGameAPI instance].appKey = @"93a27b0bd99bac3e68a440b48aa421ab";//@"b59c21a078fde074a6750e91ed19fb21";//93a27b0bd99bac3e68a440b48aa421ab
120 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; 120 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary];
121 [payInfo setValue:@"100" forKey:@"serverId"]; 121 [payInfo setValue:@"100" forKey:@"serverId"];
122 [payInfo setValue:@"10010" forKey:@"roleId"]; 122 [payInfo setValue:@"10010" forKey:@"roleId"];
123 [payInfo setValue:@"1000" forKey:@"channelId"]; 123 [payInfo setValue:@"1000" forKey:@"channelId"];
124 [payInfo setValue:@"10" forKey:@"amount"]; 124 [payInfo setValue:@"10" forKey:@"amount"];
125 [payInfo setValue:@"ios demo" forKey:@"extraInfo"]; 125 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];
126 [payInfo setValue:@"test" forKey:@"product"]; 126 [payInfo setValue:@"test" forKey:@"product"];
127 [payInfo setValue:@"76c17cc68ff9f7f40bd3d096ccc5600a" forKey:@"sessionKey"]; //self.sessionKey 127 [payInfo setValue:@"76c17cc68ff9f7f40bd3d096ccc5600a" forKey:@"sessionKey"]; //self.sessionKey
128 [[LetsGameAPI instance] pay:payInfo handleCallBack:^{ 128 [[LetsGameAPI instance] pay:payInfo handleCallBack:^{
129 NSLog(@"第三方支付完成"); 129 NSLog(@"第三方支付完成");
130 }]; 130 }];
131 } 131 }
132 132
133 -(void)onIapTest{ 133 -(void)onIapTest{
134 [LetsGameAPI instance].appId = @"10056"; 134 [LetsGameAPI instance].appId = @"10056";
135 [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21"; 135 [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21";
136 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; 136 NSMutableDictionary *payInfo = [NSMutableDictionary dictionary];
137 [payInfo setValue:@"5001" forKey:@"serverId"]; 137 [payInfo setValue:@"5001" forKey:@"serverId"];
138 [payInfo setValue:@"10010" forKey:@"roleId"]; 138 [payInfo setValue:@"10010" forKey:@"roleId"];
139 [payInfo setValue:@"1000" forKey:@"channelId"]; 139 [payInfo setValue:@"1000" forKey:@"channelId"];
140 [payInfo setValue:@"10" forKey:@"amount"]; 140 [payInfo setValue:@"10" forKey:@"amount"];
141 [payInfo setValue:@"ios demo" forKey:@"extraInfo"]; 141 [payInfo setValue:@"ios demo" forKey:@"extraInfo"];
142 [payInfo setValue:@"test.product.1" forKey:@"product"]; 142 [payInfo setValue:@"test.product.1" forKey:@"product"];
143 [[LetsGameAPI instance] iap:payInfo forUser:@"" succCallback:^(NSString *orderId) { 143 [[LetsGameAPI instance] iap:payInfo forUser:@"" succCallback:^(NSString *orderId) {
144 //注意测试仅仅是通知客户端成功,但是还需要向服务器请求验证是否成功,以服务端验证为准 144 //注意测试仅仅是通知客户端成功,但是还需要向服务器请求验证是否成功,以服务端验证为准
145 NSLog(@"IAP completed orderId of Gumptech:%@",orderId); 145 NSLog(@"IAP completed orderId of Gumptech:%@",orderId);
146 } failCallback:^(NSString *orderId) { 146 } failCallback:^(NSString *orderId) {
147 NSLog(@"IAP file orderId of Gumptech:%@",orderId); 147 NSLog(@"IAP file orderId of Gumptech:%@",orderId);
148 }]; 148 }];
149 } 149 }
150 150
151 151
152 - (BOOL)shouldAutorotate { 152 - (BOOL)shouldAutorotate {
153 return YES; 153 return YES;
154 } 154 }
155 155
156 -(UIInterfaceOrientationMask)supportedInterfaceOrientations{ 156 -(UIInterfaceOrientationMask)supportedInterfaceOrientations{
157 return UIInterfaceOrientationMaskAll; 157 return UIInterfaceOrientationMaskAll;
158 } 158 }
159 159
160 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 160 - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
161 return YES; 161 return YES;
162 } 162 }
163 163
164 @end 164 @end
165 165