Commit a54d8234ad7adfe49b59389ca42c71703b500613
1 parent
79f6c46eff
Exists in
master
v3.3.20 修改第三方支付参数,删除iOSBlue测试配置参数
Showing 8 changed files with 9 additions and 12 deletions Inline Diff
- IOSDocument.md
- ios/GameSDK.framework/Versions/A/GameSDK
- ios/GameSDK.framework/Versions/A/Headers/LetsGameAPI.h
- ios/GameSDK.zip
- ios/GameSDKDemo/GameSDKDemo.xcodeproj/project.xcworkspace/xcuserdata/yanglele.xcuserdatad/UserInterfaceState.xcuserstate
- ios/GameSDKDemo/GameSDKDemo.xcodeproj/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist
- ios/GameSDKDemo/letsgameDemo/LSGAppDelegate.m
- ios/GameSDKDemo/letsgameDemo/LSGMainViewController.m
IOSDocument.md
1 | # Gump IOS SDK使用文档 | 1 | # Gump IOS SDK使用文档 |
2 | 2 | ||
3 | 3 | ||
4 | 接入手册 | 4 | 接入手册 |
5 | V 3.3.19 | 5 | V 3.3.20 |
6 | 2016年11月14日 | 6 | 2016年11月16日 |
7 | 7 | ||
8 | ## 概述 | 8 | ## 概述 |
9 | #### 本SDK提供gump账号,fb账号,vk账号三种账号登录,iap支付和第三方支付两种支付功能,其中gump账号登录和fb账号登录功能为必须接入,支付可根据需要选择性接入。 | 9 | #### 本SDK提供gump账号,fb账号,vk账号三种账号登录,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 | + 以下为可选,若接入bluePay第三方支付方式需要添加一下的framework和bundle,其中CoreBuePay.framework直接引入工程,之后再依次引入CoreTelephony.framework、MessageUI.framework、SystemConfiguration.framework,最后将BlueMobile.bundle拖入项目中 | 17 | + 以下为可选,若接入bluePay第三方支付方式需要添加一下的framework和bundle,其中CoreBuePay.framework直接引入工程,之后再依次引入CoreTelephony.framework、MessageUI.framework、SystemConfiguration.framework,最后将BlueMobile.bundle拖入项目中 |
18 | 18 | ||
19 | 19 | ||
20 | ### 2、引入头文件,设置build setting | 20 | ### 2、引入头文件,设置build setting |
21 | 需要使用头文件有LetsGameAPI.h和VKBridge.h,其中VKBridge.h为接入vk时使用,不接入vk可忽略。 | 21 | 需要使用头文件有LetsGameAPI.h和VKBridge.h,其中VKBridge.h为接入vk时使用,不接入vk可忽略。 |
22 | 因sdk内使用了category,需要设置other linker flag为 -ObjC | 22 | 因sdk内使用了category,需要设置other linker flag为 -ObjC |
23 | 23 | ||
24 | 24 | ||
25 | ### 3、增加必要配置 | 25 | ### 3、增加必要配置 |
26 | 1)在application delegate中, 在application:openURL:sourceApplication:annotation:添加返回: | 26 | 1)在application delegate中, 在application:openURL:sourceApplication:annotation:添加返回: |
27 | 27 | ||
28 | return [[LetsGameAPI instance] handleOpenURL:url sourceApplication:sourceApplication]; | 28 | return [[LetsGameAPI instance] handleOpenURL:url sourceApplication:sourceApplication]; |
29 | 29 | ||
30 | 30 | ||
31 | 2)配置URL-schema(vk专用,不接入vk可忽略) | 31 | 2)配置URL-schema(vk专用,不接入vk可忽略) |
32 | 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. | 32 | 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 |  | 33 |  |
34 | Xcode 4: Open your Info.plist then add a new row URL Types. Set the URL identifier to vk+APP_ID | 34 | Xcode 4: Open your Info.plist then add a new row URL Types. Set the URL identifier to vk+APP_ID |
35 |  | 35 |  |
36 | 36 | ||
37 | 3)配置plist和scheme(BluePay的linePay使用,不接入BluePay的LinePay可忽略) | 37 | 3)配置plist和scheme(BluePay的linePay使用,不接入BluePay的LinePay可忽略) |
38 | 38 | ||
39 | plist部分: | 39 | plist部分: |
40 | <key>LSApplicationQueriesSchemes</key> | 40 | <key>LSApplicationQueriesSchemes</key> |
41 | <array> | 41 | <array> |
42 | <string>line</string> | 42 | <string>line</string> |
43 | </array> | 43 | </array> |
44 | scheme部分: | 44 | scheme部分: |
45 | <key>CFBundleURLTypes</key> | 45 | <key>CFBundleURLTypes</key> |
46 | <array> | 46 | <array> |
47 | <dict> | 47 | <dict> |
48 | <key>CFBundleTypeRole</key> | 48 | <key>CFBundleTypeRole</key> |
49 | <string>None</string> | 49 | <string>None</string> |
50 | <key>CFBundleURLName</key> | 50 | <key>CFBundleURLName</key> |
51 | <string>com.gump.sdk</string> | 51 | <string>com.gump.sdk</string> |
52 | <key>CFBundleURLSchemes</key> | 52 | <key>CFBundleURLSchemes</key> |
53 | <array> | 53 | <array> |
54 | <string> gump+游戏的appId </string> | 54 | <string> gump+游戏的appId </string> |
55 | </array> | 55 | </array> |
56 | </dict> | 56 | </dict> |
57 | </array> | 57 | </array> |
58 | ### 4、在工程里添加SDK登录代码 | 58 | ### 4、在工程里添加SDK登录代码 |
59 | 59 | ||
60 | [LetsGameAPI instance].appId = @"100"; // 设置appId | 60 | [LetsGameAPI instance].appId = @"100"; // 设置appId |
61 | [LetsGameAPI instance].appKey = @"100"; // 设置appKey | 61 | [LetsGameAPI instance].appKey = @"100"; // 设置appKey |
62 | 62 | ||
63 | //启用vk的代码,需要填入vk appId,若不接入vk,可以忽略 | 63 | //启用vk的代码,需要填入vk appId,若不接入vk,可以忽略 |
64 | //VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"]; | 64 | //VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"]; |
65 | //[LetsGameAPI instance].vkBridge = vkBridge; | 65 | //[LetsGameAPI instance].vkBridge = vkBridge; |
66 | 66 | ||
67 | //隐藏fb登录 | 67 | //隐藏fb登录 |
68 | [LetsGameAPI disableFB:YES]; | 68 | [LetsGameAPI disableFB:YES]; |
69 | 69 | ||
70 | //隐藏gumptech的logo | 70 | //隐藏gumptech的logo |
71 | [LetsGameAPI hiddenLogo:YES]; | 71 | [LetsGameAPI hiddenLogo:YES]; |
72 | 72 | ||
73 | [[LetsGameAPI instance] showLoginView]; // 弹出登录页面 | 73 | [[LetsGameAPI instance] showLoginView]; // 弹出登录页面 |
74 | 74 | ||
75 | // 登录成功回调 | 75 | // 登录成功回调 |
76 | [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) { | 76 | [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) { |
77 | NSLog(@"%@", [NSString stringWithFormat:@"login succ: userId = %@, sessionKey = %@, accountType = %d", userId, sessionKey, type]); | 77 | NSLog(@"%@", [NSString stringWithFormat:@"login succ: userId = %@, sessionKey = %@, accountType = %d", userId, sessionKey, type]); |
78 | }; | 78 | }; |
79 | 79 | ||
80 | // 登录失败回调 | 80 | // 登录失败回调 |
81 | [LetsGameAPI instance].dismissBlock = ^() { | 81 | [LetsGameAPI instance].dismissBlock = ^() { |
82 | NSLog(@"dismiss without login"); | 82 | NSLog(@"dismiss without login"); |
83 | }; | 83 | }; |
84 | 84 | ||
85 | ### 5、登录注销 | 85 | ### 5、登录注销 |
86 | 注销接口只要设置过appId和appKey之后就不需要设置了,注销完成之后会回到登录界面。FB登录回到登录页面,Gump登录或者游客登录回到登录框。 | 86 | 注销接口只要设置过appId和appKey之后就不需要设置了,注销完成之后会回到登录界面。FB登录回到登录页面,Gump登录或者游客登录回到登录框。 |
87 | 87 | ||
88 | [LetsGameAPI instance].appId = @"100";//设置appId | 88 | [LetsGameAPI instance].appId = @"100";//设置appId |
89 | [LetsGameAPI instance].appKey = @"100";//设置appkey | 89 | [LetsGameAPI instance].appKey = @"100";//设置appkey |
90 | [[LetsGameAPI instance] logout]; //注销 | 90 | [[LetsGameAPI instance] logout]; //注销 |
91 | 91 | ||
92 | 92 | ||
93 | ### 6、第三方支付 | 93 | ### 6、第三方支付 |
94 | [LetsGameAPI instance].appId = @"10022"; | 94 | [LetsGameAPI instance].appId = @"10022"; |
95 | [LetsGameAPI instance].appKey = @"f899139df5e1059396431415e770c6dd"; | 95 | [LetsGameAPI instance].appKey = @"f899139df5e1059396431415e770c6dd"; |
96 | NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; | 96 | NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; |
97 | [payInfo setValue:@"5001" forKey:@"serverId"];//服务器id,必传参数 | 97 | [payInfo setValue:@"5001" forKey:@"serverId"];//服务器id,必传参数 |
98 | [payInfo setValue:@"10010" forKey:@"roleId"];//用户角色id | 98 | [payInfo setValue:@"10010" forKey:@"roleId"];//用户角色id |
99 | [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id | 99 | [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id |
100 | [payInfo setValue:@"10" forKey:@"amount"];//金额 | 100 | [payInfo setValue:@"10" forKey:@"amount"];//金额 |
101 | [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//外部订单信息 | 101 | [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//外部订单信息 |
102 | [payInfo setValue:@"元宝" forKey:@"product"];//物品信息 | 102 | [payInfo setValue:@"元宝" forKey:@"product"];//物品信息 |
103 | [payInfo setValue:self.sessionKey forKey:@"sessionKey"];//登录成功的sessionKey | 103 | [payInfo setValue:self.sessionKey forKey:@"sessionKey"];//登录成功的sessionKey |
104 | [payInfo setValue:@"1" forKey:@"iosBlue"];//接入完BluePay,需要使用时需要的标志位 | ||
105 | [[LetsGameAPI instance] pay:payInfo handleCallBack:^{ | 104 | [[LetsGameAPI instance] pay:payInfo handleCallBack:^{ |
106 | //第三方支付完成时的回调(包括支付成功和支付失败,除了支付过程中取消的),取消的不会有回调 | 105 | //第三方支付完成时的回调(包括支付成功和支付失败,除了支付过程中取消的),取消的不会有回调 |
107 | NSLog(@"第三方支付完成"); | 106 | NSLog(@"第三方支付完成"); |
108 | }]]; | 107 | }]]; |
109 | 108 | ||
110 | ### 7、IAP支付 | 109 | ### 7、IAP支付 |
111 | 若要使用apple IAP支付,需要在AppDelegate的application: didFinishLaunchingWithOptions:方法内注册iap observer,使用如下方法 | 110 | 若要使用apple IAP支付,需要在AppDelegate的application: didFinishLaunchingWithOptions:方法内注册iap observer,使用如下方法 |
112 | 111 | ||
113 | [[LetsGameAPI instance] registeIapObserver]; | 112 | [[LetsGameAPI instance] registeIapObserver]; |
114 | 具体调用iap支付的方法如下: | 113 | 具体调用iap支付的方法如下: |
115 | 114 | ||
116 | [LetsGameAPI instance].appId = @"10022"; | 115 | [LetsGameAPI instance].appId = @"10022"; |
117 | [LetsGameAPI instance].appKey = @"93a27b0bd99bac3e68a440b48aa421ab"; | 116 | [LetsGameAPI instance].appKey = @"93a27b0bd99bac3e68a440b48aa421ab"; |
118 | NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; | 117 | NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; |
119 | [payInfo setValue:@"5001" forKey:@"serverId"];//当前用户所在的服务器Id | 118 | [payInfo setValue:@"5001" forKey:@"serverId"];//当前用户所在的服务器Id |
120 | [payInfo setValue:@"10010" forKey:@"roleId"];//当前用户的角色id | 119 | [payInfo setValue:@"10010" forKey:@"roleId"];//当前用户的角色id |
121 | [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id,用于统计 | 120 | [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id,用于统计 |
122 | [payInfo setValue:@"10" forKey:@"amount"];//对应支付项的支付金额,实际支付金额以itunes配置为准 | 121 | [payInfo setValue:@"10" forKey:@"amount"];//对应支付项的支付金额,实际支付金额以itunes配置为准 |
123 | [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//扩展信息,可以游戏自定义,建议传自有订单号 | 122 | [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//扩展信息,可以游戏自定义,建议传自有订单号 |
124 | [payInfo setValue:@"test.product.1" forKey:@"product"];//itunes 后台配置的对应支付项的productId | 123 | [payInfo setValue:@"test.product.1" forKey:@"product"];//itunes 后台配置的对应支付项的productId |
125 | [[LetsGameAPI instance] iap:payInfo forUser:@"" handleCallback:^(NSString* orderId){ | 124 | [[LetsGameAPI instance] iap:payInfo forUser:@"" handleCallback:^(NSString* orderId){ |
126 | //此处的回调表明支付已经完成,但此时支付不一定成功,需要服务端验证支付结果 | 125 | //此处的回调表明支付已经完成,但此时支付不一定成功,需要服务端验证支付结果 |
127 | //orderId为gump生成的订单号,此订单号可以在gump server查询此笔支付是否成功 | 126 | //orderId为gump生成的订单号,此订单号可以在gump server查询此笔支付是否成功 |
128 | NSLog(@"iap completed orderId of gumptech:%@",orderId); | 127 | NSLog(@"iap completed orderId of gumptech:%@",orderId); |
129 | }]; | 128 | }]; |
130 | ### 8、SDK版本测试设置 | 129 | ### 8、token的获取 |
131 | 若想使用SDK的debug版本,需要在AppDelegate的application: didFinishLaunchingWithOptions:中设置: | ||
132 | |||
133 | [[LetsGameAPI instance] decideIsDebug:1]; | ||
134 | 不设置或者设置为0时,默认使用release版本 | ||
135 | ### 9、token的获取 | ||
136 | FB登录之后会产生token并自动登录,需要如果需要token的话,需要自己调用接口获取。 | 130 | FB登录之后会产生token并自动登录,需要如果需要token的话,需要自己调用接口获取。 |
137 | 131 | ||
138 | //tokenString:token字符串 | 132 | //tokenString:token字符串 |
139 | //refreshTime:refreshTime token最后刷新的时间,即获取的token的时间 | 133 | //refreshTime:refreshTime token最后刷新的时间,即获取的token的时间 |
140 | //expirationTime:expirationTime token最后的有效时间 | 134 | //expirationTime:expirationTime token最后的有效时间 |
141 | [[LetsGameAPI instance] obtainAccessTokenSuccess:^(NSString *tokenString, NSString *refreshTime, NSString *expirationTime) { | 135 | [[LetsGameAPI instance] obtainAccessTokenSuccess:^(NSString *tokenString, NSString *refreshTime, NSString *expirationTime) { |
142 | NSLog(@"tokenString %@, refreshTime %@, expirationTime %@", tokenString, refreshTime, expirationTime); | 136 | NSLog(@"tokenString %@, refreshTime %@, expirationTime %@", tokenString, refreshTime, expirationTime); |
143 | } failure:^(NSString *errorString) { | 137 | } failure:^(NSString *errorString) { |
144 | NSLog(@"get token faile"); | 138 | NSLog(@"get token faile"); |
145 | }]; | 139 | }]; |
146 | 140 | ||
147 | 141 |
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 hiddenLogo = NO; | 14 | static BOOL hiddenLogo = NO; |
15 | 15 | ||
16 | static NSString *version = @"3.3.19"; | 16 | static NSString *version = @"3.3.20"; |
17 | 17 | ||
18 | @interface LetsGameAPI : NSObject<UIApplicationDelegate> | 18 | @interface LetsGameAPI : NSObject<UIApplicationDelegate> |
19 | 19 | ||
20 | @property (nonatomic, strong) NSString *appId; | 20 | @property (nonatomic, strong) NSString *appId; |
21 | @property (nonatomic, strong) NSString *appKey; | 21 | @property (nonatomic, strong) NSString *appKey; |
22 | @property (nonatomic, copy) LSGLoginSuccBlock succBlock; | 22 | @property (nonatomic, copy) LSGLoginSuccBlock succBlock; |
23 | @property (nonatomic, copy) LSGDismissBlock dismissBlock; | 23 | @property (nonatomic, copy) LSGDismissBlock dismissBlock; |
24 | @property (nonatomic, assign) int isDebug; | 24 | @property (nonatomic, assign) int isDebug; |
25 | @property (nonatomic, assign) int decideWebPay; | 25 | @property (nonatomic, assign) int decideWebPay; |
26 | @property (nonatomic,retain) id<VKBridgeProtocol> vkBridge; | 26 | @property (nonatomic,retain) id<VKBridgeProtocol> vkBridge; |
27 | //@property(nonatomic,strong) NSString *version; | 27 | //@property(nonatomic,strong) NSString *version; |
28 | 28 | ||
29 | + (instancetype)instance; | 29 | + (instancetype)instance; |
30 | 30 | ||
31 | -(NSString*)version; | 31 | -(NSString*)version; |
32 | 32 | ||
33 | - (void)showLoginView; | 33 | - (void)showLoginView; |
34 | - (void)showLoginViewInView:(UIView *)view; | 34 | - (void)showLoginViewInView:(UIView *)view; |
35 | 35 | ||
36 | +(void)disableFB:(BOOL)isDisable; | 36 | +(void)disableFB:(BOOL)isDisable; |
37 | +(BOOL)isFBDisable; | 37 | +(BOOL)isFBDisable; |
38 | +(BOOL)isVKEnable; | 38 | +(BOOL)isVKEnable; |
39 | +(void)hiddenLogo:(BOOL)isHidden; | 39 | +(void)hiddenLogo:(BOOL)isHidden; |
40 | +(BOOL)isHiddenLogo; | 40 | +(BOOL)isHiddenLogo; |
41 | 41 | ||
42 | - (void)logout; | 42 | - (void)logout; |
43 | 43 | ||
44 | - (void)hide; | 44 | - (void)hide; |
45 | 45 | ||
46 | - (BOOL)handleOpenURL:(NSURL *)url | 46 | - (BOOL)handleOpenURL:(NSURL *)url |
47 | sourceApplication:(NSString *)sourceApplication; | 47 | sourceApplication:(NSString *)sourceApplication; |
48 | 48 | ||
49 | -(void)pay:(NSDictionary*) payInfo handleCallBack:(void (^)()) paySuccessCallback; | 49 | -(void)pay:(NSDictionary*) payInfo handleCallBack:(void (^)()) paySuccessCallback; |
50 | 50 | ||
51 | -(void)iap:(NSDictionary*) payInfo forUser:(NSString*) uid handleCallback:(void (^)(NSString* orderId)) callback; | 51 | -(void)iap:(NSDictionary*) payInfo forUser:(NSString*) uid handleCallback:(void (^)(NSString* orderId)) callback; |
52 | 52 | ||
53 | -(void)registeIapObserver; | 53 | -(void)registeIapObserver; |
54 | 54 | ||
55 | -(void)decideIsDebug:(int)isDebug; | 55 | -(void)decideIsDebug:(int)isDebug; |
56 | 56 | ||
57 | -(void)decideWebPayVersion:(int)decideWebPay; | 57 | -(void)decideWebPayVersion:(int)decideWebPay; |
58 | 58 | ||
59 | -(void)obtainAccessTokenSuccess:(void (^)(NSString *tokenString, NSString *refreshTime, NSString *expirationTime))success | 59 | -(void)obtainAccessTokenSuccess:(void (^)(NSString *tokenString, NSString *refreshTime, NSString *expirationTime))success |
60 | failure:(void (^)(NSString *errorString))failure; | 60 | failure:(void (^)(NSString *errorString))failure; |
61 | @end | 61 | @end |
62 | 62 |
ios/GameSDK.zip
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/GameSDKDemo.xcodeproj/xcshareddata/xcdebugger/Breakpoints_v2.xcbkptlist
File was created | 1 | <?xml version="1.0" encoding="UTF-8"?> | |
2 | <Bucket | ||
3 | type = "4" | ||
4 | version = "2.0"> | ||
5 | </Bucket> | ||
6 |
ios/GameSDKDemo/letsgameDemo/LSGAppDelegate.m
1 | // | 1 | // |
2 | // LSGAppDelegate.m | 2 | // LSGAppDelegate.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 "LSGAppDelegate.h" | 9 | #import "LSGAppDelegate.h" |
10 | #import "LSGMainViewController.h" | 10 | #import "LSGMainViewController.h" |
11 | #import "LetsGameAPI.h" | 11 | #import "LetsGameAPI.h" |
12 | 12 | ||
13 | @implementation LSGAppDelegate | 13 | @implementation LSGAppDelegate |
14 | 14 | ||
15 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions | 15 | - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions |
16 | { | 16 | { |
17 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; | 17 | self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; |
18 | 18 | ||
19 | LSGMainViewController *viewController = [[LSGMainViewController alloc] init]; | 19 | LSGMainViewController *viewController = [[LSGMainViewController alloc] init]; |
20 | self.window.rootViewController = viewController; | 20 | self.window.rootViewController = viewController; |
21 | [self.window addSubview:viewController.view]; | 21 | [self.window addSubview:viewController.view]; |
22 | 22 | ||
23 | self.window.backgroundColor = [UIColor whiteColor]; | 23 | self.window.backgroundColor = [UIColor whiteColor]; |
24 | [self.window makeKeyAndVisible]; | 24 | [self.window makeKeyAndVisible]; |
25 | // [[LetsGameAPI instance] decideIsDebug:1]; | ||
26 | [[UIApplication sharedApplication] setStatusBarHidden:YES]; | 25 | [[UIApplication sharedApplication] setStatusBarHidden:YES]; |
27 | [[LetsGameAPI instance] registeIapObserver]; | 26 | [[LetsGameAPI instance] registeIapObserver]; |
28 | 27 | ||
29 | return YES; | 28 | return YES; |
30 | } | 29 | } |
31 | 30 | ||
32 | - (void)applicationWillResignActive:(UIApplication *)application | 31 | - (void)applicationWillResignActive:(UIApplication *)application |
33 | { | 32 | { |
34 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. | 33 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. |
35 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. | 34 | // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. |
36 | } | 35 | } |
37 | 36 | ||
38 | - (void)applicationDidEnterBackground:(UIApplication *)application | 37 | - (void)applicationDidEnterBackground:(UIApplication *)application |
39 | { | 38 | { |
40 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. | 39 | // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. |
41 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. | 40 | // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. |
42 | } | 41 | } |
43 | 42 | ||
44 | - (void)applicationWillEnterForeground:(UIApplication *)application | 43 | - (void)applicationWillEnterForeground:(UIApplication *)application |
45 | { | 44 | { |
46 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. | 45 | // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. |
47 | } | 46 | } |
48 | 47 | ||
49 | -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ | 48 | -(BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation{ |
50 | return [[LetsGameAPI instance] handleOpenURL:url sourceApplication:sourceApplication]; | 49 | return [[LetsGameAPI instance] handleOpenURL:url sourceApplication:sourceApplication]; |
51 | //return [[LetsGameAPI instance].vkBridge processOpenURL:url fromApplication:sourceApplication]; | 50 | //return [[LetsGameAPI instance].vkBridge processOpenURL:url fromApplication:sourceApplication]; |
52 | } | 51 | } |
53 | 52 | ||
54 | 53 | ||
55 | @end | 54 | @end |
56 | 55 |
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 | 67 | ||
68 | - (UILabel *)resultLabel { | 68 | - (UILabel *)resultLabel { |
69 | if (!_resultLabel) { | 69 | if (!_resultLabel) { |
70 | _resultLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.view.frame) - 90, self.view.frame.size.width, 60)]; | 70 | _resultLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(self.view.frame) - 90, self.view.frame.size.width, 60)]; |
71 | _resultLabel.backgroundColor = [UIColor clearColor]; | 71 | _resultLabel.backgroundColor = [UIColor clearColor]; |
72 | _resultLabel.textAlignment = NSTextAlignmentCenter; | 72 | _resultLabel.textAlignment = NSTextAlignmentCenter; |
73 | _resultLabel.textColor = [UIColor redColor]; | 73 | _resultLabel.textColor = [UIColor redColor]; |
74 | _resultLabel.font = [UIFont systemFontOfSize:15]; | 74 | _resultLabel.font = [UIFont systemFontOfSize:15]; |
75 | _resultLabel.numberOfLines = 4; | 75 | _resultLabel.numberOfLines = 4; |
76 | _resultLabel.lineBreakMode = NSLineBreakByWordWrapping; | 76 | _resultLabel.lineBreakMode = NSLineBreakByWordWrapping; |
77 | [self.view addSubview:_resultLabel]; | 77 | [self.view addSubview:_resultLabel]; |
78 | } | 78 | } |
79 | 79 | ||
80 | return _resultLabel; | 80 | return _resultLabel; |
81 | } | 81 | } |
82 | 82 | ||
83 | 83 | ||
84 | - (void)onClickTest { | 84 | - (void)onClickTest { |
85 | 85 | ||
86 | [LetsGameAPI instance].appId = @"10056";//10047 | 86 | [LetsGameAPI instance].appId = @"10056";//10047 |
87 | [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21";//eccd9f7dc92858b741132fda313130cf | 87 | [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21";//eccd9f7dc92858b741132fda313130cf |
88 | [LetsGameAPI hiddenLogo:YES]; | 88 | [LetsGameAPI hiddenLogo:YES]; |
89 | // [LetsGameAPI disableFB:NO]; | 89 | // [LetsGameAPI disableFB:NO]; |
90 | NSLog(@"sdk version:%@",[[LetsGameAPI instance] version]); | 90 | NSLog(@"sdk version:%@",[[LetsGameAPI instance] version]); |
91 | //启用vk登录 | 91 | //启用vk登录 |
92 | VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"]; | 92 | VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"]; |
93 | [LetsGameAPI instance].vkBridge = vkBridge; | 93 | [LetsGameAPI instance].vkBridge = vkBridge; |
94 | 94 | ||
95 | [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) { | 95 | [LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) { |
96 | self.sessionKey = sessionKey; | 96 | self.sessionKey = sessionKey; |
97 | self.resultLabel.text = [NSString stringWithFormat:@"login succ: userId = %@, sessionKey = %@, accountType = %ld", userId, sessionKey, type]; | 97 | self.resultLabel.text = [NSString stringWithFormat:@"login succ: userId = %@, sessionKey = %@, accountType = %ld", userId, sessionKey, type]; |
98 | }; | 98 | }; |
99 | [LetsGameAPI instance].dismissBlock = ^() { | 99 | [LetsGameAPI instance].dismissBlock = ^() { |
100 | self.resultLabel.text = @"dismiss without login"; | 100 | self.resultLabel.text = @"dismiss without login"; |
101 | }; | 101 | }; |
102 | 102 | ||
103 | [[LetsGameAPI instance] showLoginView]; | 103 | [[LetsGameAPI instance] showLoginView]; |
104 | } | 104 | } |
105 | 105 | ||
106 | 106 | ||
107 | - (void)onLogoutTest { | 107 | - (void)onLogoutTest { |
108 | [LetsGameAPI instance].appId = @"10056"; | 108 | [LetsGameAPI instance].appId = @"10056"; |
109 | [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21"; | 109 | [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21"; |
110 | [[LetsGameAPI instance] logout]; | 110 | [[LetsGameAPI instance] logout]; |
111 | 111 | ||
112 | } | 112 | } |
113 | 113 | ||
114 | -(void)onPayTest{ | 114 | -(void)onPayTest{ |
115 | [LetsGameAPI instance].appId = @"10056";//10022 | 115 | [LetsGameAPI instance].appId = @"10056";//10022 |
116 | [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21";//93a27b0bd99bac3e68a440b48aa421ab | 116 | [LetsGameAPI instance].appKey = @"b59c21a078fde074a6750e91ed19fb21";//93a27b0bd99bac3e68a440b48aa421ab |
117 | NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; | 117 | NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; |
118 | [payInfo setValue:@"100" forKey:@"serverId"]; | 118 | [payInfo setValue:@"100" forKey:@"serverId"]; |
119 | [payInfo setValue:@"10010" forKey:@"roleId"]; | 119 | [payInfo setValue:@"10010" forKey:@"roleId"]; |
120 | [payInfo setValue:@"1000" forKey:@"channelId"]; | 120 | [payInfo setValue:@"1000" forKey:@"channelId"]; |
121 | [payInfo setValue:@"10" forKey:@"amount"]; | 121 | [payInfo setValue:@"10" forKey:@"amount"]; |
122 | [payInfo setValue:@"ios demo" forKey:@"extraInfo"]; | 122 | [payInfo setValue:@"ios demo" forKey:@"extraInfo"]; |
123 | [payInfo setValue:@"test" forKey:@"product"]; | 123 | [payInfo setValue:@"test" forKey:@"product"]; |
124 | [payInfo setValue:@"76c17cc68ff9f7f40bd3d096ccc5600a" forKey:@"sessionKey"]; //self.sessionKey | 124 | [payInfo setValue:@"76c17cc68ff9f7f40bd3d096ccc5600a" forKey:@"sessionKey"]; //self.sessionKey |
125 | [payInfo setValue:@"1" forKey:@"iosBlue"]; | ||
126 | [[LetsGameAPI instance] pay:payInfo handleCallBack:^{ | 125 | [[LetsGameAPI instance] pay:payInfo handleCallBack:^{ |
127 | NSLog(@"第三方支付完成"); | 126 | NSLog(@"第三方支付完成"); |
128 | }]; | 127 | }]; |
129 | } | 128 | } |
130 | 129 | ||
131 | -(void)onIapTest{ | 130 | -(void)onIapTest{ |
132 | [LetsGameAPI instance].appId = @"10022"; | 131 | [LetsGameAPI instance].appId = @"10022"; |
133 | [LetsGameAPI instance].appKey = @"93a27b0bd99bac3e68a440b48aa421ab"; | 132 | [LetsGameAPI instance].appKey = @"93a27b0bd99bac3e68a440b48aa421ab"; |
134 | NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; | 133 | NSMutableDictionary *payInfo = [NSMutableDictionary dictionary]; |
135 | [payInfo setValue:@"5001" forKey:@"serverId"]; | 134 | [payInfo setValue:@"5001" forKey:@"serverId"]; |
136 | [payInfo setValue:@"10010" forKey:@"roleId"]; | 135 | [payInfo setValue:@"10010" forKey:@"roleId"]; |
137 | [payInfo setValue:@"1000" forKey:@"channelId"]; | 136 | [payInfo setValue:@"1000" forKey:@"channelId"]; |
138 | [payInfo setValue:@"10" forKey:@"amount"]; | 137 | [payInfo setValue:@"10" forKey:@"amount"]; |
139 | [payInfo setValue:@"ios demo" forKey:@"extraInfo"]; | 138 | [payInfo setValue:@"ios demo" forKey:@"extraInfo"]; |
140 | [payInfo setValue:@"test.product.1" forKey:@"product"]; | 139 | [payInfo setValue:@"test.product.1" forKey:@"product"]; |
141 | [[LetsGameAPI instance] iap:payInfo forUser:@"" handleCallback:^(NSString* orderId){ | 140 | [[LetsGameAPI instance] iap:payInfo forUser:@"" handleCallback:^(NSString* orderId){ |
142 | NSLog(@"IAP completed orderId of Gumptech:%@",orderId); | 141 | NSLog(@"IAP completed orderId of Gumptech:%@",orderId); |
143 | }]; | 142 | }]; |
144 | } | 143 | } |
145 | 144 | ||
146 | 145 | ||
147 | - (BOOL)shouldAutorotate { | 146 | - (BOOL)shouldAutorotate { |
148 | return YES; | 147 | return YES; |
149 | } | 148 | } |
150 | 149 | ||
151 | -(UIInterfaceOrientationMask)supportedInterfaceOrientations{ | 150 | -(UIInterfaceOrientationMask)supportedInterfaceOrientations{ |
152 | return UIInterfaceOrientationMaskAll; | 151 | return UIInterfaceOrientationMaskAll; |
153 | } | 152 | } |
154 | 153 | ||
155 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { | 154 | - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { |
156 | return YES; | 155 | return YES; |
157 | } | 156 | } |
158 | 157 | ||
159 | @end | 158 | @end |
160 | 159 |