Blame view

IOSDocument.md 5.98 KB
23a302b86   alexYang   GameSDK 的iOS分支提交,...
1
2
3
4
  # Gump IOS SDK使用文档
  
  
  接入手册        
e47bb8dbb   alexYang   v3.3.15 facebook自...
5
6
  V 3.3.15      
  2016年11月09日    
23a302b86   alexYang   GameSDK 的iOS分支提交,...
7
8
9
10
11
12
13
          
  ## 概述  
  #### 本SDK提供gump账号,fb账号,vk账号三种账号登录,iap支付和第三方支付两种支付功能,其中gump账号登录和fb账号登录功能为必须接入,支付可根据需要选择性接入。
  
  ## 接入步骤
  ### 1、添加Framework和资源文件  
  + 以下为必须添加的framework以及资源bundle:  
e47bb8dbb   alexYang   v3.3.15 facebook自...
14
  MobileCoreServices.framework、SystemConfiguration.framework、libz.dylib、CFNetwork.framework、GameSDK.framework、StoreKit.framework、GameSDKResources.bundle
23a302b86   alexYang   GameSDK 的iOS分支提交,...
15
16
  + 以下为可选,若接入vk登录则需要添加以下framework和bundle,其中VKSdk.framework和VKSDKResources.bundle请自行从vk.com下载,使用1.3版本  
   VKSdk.framework、VKBridge.framework、VKSDKResources.bundle
0605edc71   alexYang   接入bluePay第三方支付dem...
17
  + 以下为可选,若接入bluePay第三方支付方式需要添加一下的framework和bundle,其中CoreBuePay.framework直接引入工程,之后再依次引入CoreTelephony.framework、MessageUI.framework、SystemConfiguration.framework,最后将BlueMobile.bundle拖入项目中
23a302b86   alexYang   GameSDK 的iOS分支提交,...
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
  
  
  ### 2、引入头文件,设置build setting  
  需要使用头文件有LetsGameAPI.h和VKBridge.h,其中VKBridge.h为接入vk时使用,不接入vk可忽略。  
  因sdk内使用了category,需要设置other linker flag为 -ObjC
   
  
  ### 3、增加必要配置  
  1)在application delegate中, 在application:openURL:sourceApplication:annotation:添加返回:
  
      return [[LetsGameAPI instance] handleOpenURL:url sourceApplication:sourceApplication];
  
  	
  2)配置URL-schema(vk专用,不接入vk可忽略)  
  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.  
  ![](images/vk1.jpg)     
  Xcode 4: Open your Info.plist then add a new row URL Types. Set the URL identifier to vk+APP_ID
0605edc71   alexYang   接入bluePay第三方支付dem...
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
  ![](images/vk2.jpg)   
   
  3)配置plist和scheme(BluePay的linePay使用,不接入BluePay的LinePay可忽略)
      
      plist部分:
  	<key>LSApplicationQueriesSchemes</key>
  	    <array>
  		    <string>line</string>
  	    </array>
  	scheme部分:
  	<key>CFBundleURLTypes</key>
  	<array>
  		<dict>
  			<key>CFBundleTypeRole</key>
  			<string>None</string>
  			<key>CFBundleURLName</key>
  			<string>com.gump.sdk</string>
  			<key>CFBundleURLSchemes</key>
  			<array>
  				<string> gump+游戏的appId </string>
  			</array>
  		</dict>
  	</array>
23a302b86   alexYang   GameSDK 的iOS分支提交,...
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  ### 4、在工程里添加SDK登录代码  
  
  	[LetsGameAPI instance].appId = @"100"; // 设置appId
  	[LetsGameAPI instance].appKey = @"100"; // 设置appKey
  	
  	//启用vk的代码,需要填入vk appId,若不接入vk,可以忽略
  	//VKBridge *vkBridge = [[VKBridge alloc] initWithVKAppId:@"5029792"];
  	//[LetsGameAPI instance].vkBridge = vkBridge;
  	
  	//隐藏fb登录
  	[LetsGameAPI disableFB:YES];
  	
  	//隐藏gumptech的logo
  	[LetsGameAPI hiddenLogo:YES];
  
  	[[LetsGameAPI instance] showLoginView]; // 弹出登录页面
  
  	// 登录成功回调
  	[LetsGameAPI instance].succBlock = ^(NSString *userId, NSString *sessionKey, LSGAccountType type) {
  	NSLog(@"%@", [NSString stringWithFormat:@"login succ: userId = %@, sessionKey = %@, accountType = %d", userId, sessionKey, type]);
  	};
  
  	// 登录失败回调
  	[LetsGameAPI instance].dismissBlock = ^() {
  	 NSLog(@"dismiss without login");
  	};
  
  
  ### 5、第三方支付    
      [LetsGameAPI instance].appId = @"10022";
      [LetsGameAPI instance].appKey = @"f899139df5e1059396431415e770c6dd";
      NSMutableDictionary *payInfo = [NSMutableDictionary dictionary];
      [payInfo setValue:@"5001" forKey:@"serverId"];//服务器id,必传参数
f06626730   alexYang   change debug stat...
91
      [payInfo setValue:@"10010" forKey:@"roleId"];//用户角色id
23a302b86   alexYang   GameSDK 的iOS分支提交,...
92
93
94
95
      [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id
      [payInfo setValue:@"10" forKey:@"amount"];//金额
      [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//外部订单信息
      [payInfo setValue:@"元宝" forKey:@"product"];//物品信息
f06626730   alexYang   change debug stat...
96
      [payInfo setValue:self.sessionKey forKey:@"sessionKey"];//登录成功的sessionKey
0605edc71   alexYang   接入bluePay第三方支付dem...
97
      [payInfo setValue:@"1" forKey:@"iosBlue"];//接入完BluePay,需要使用时需要的标志位
cfe25e05d   alexYang   第三方支付回调文档修改
98
99
100
101
      [[LetsGameAPI instance] pay:payInfo handleCallBack:^{
      	//第三方支付完成时的回调(包括支付成功和支付失败,除了支付过程中取消的),取消的不会有回调
          NSLog(@"第三方支付完成");
      }]];
23a302b86   alexYang   GameSDK 的iOS分支提交,...
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
      
  ### 6、IAP支付
  若要使用apple IAP支付,需要在AppDelegate的application: didFinishLaunchingWithOptions:方法内注册iap observer,使用如下方法   
  
      [[LetsGameAPI instance] registeIapObserver];  
  具体调用iap支付的方法如下:   
      
      [LetsGameAPI instance].appId = @"10022";
      [LetsGameAPI instance].appKey = @"93a27b0bd99bac3e68a440b48aa421ab";
      NSMutableDictionary *payInfo = [NSMutableDictionary dictionary];
      [payInfo setValue:@"5001" forKey:@"serverId"];//当前用户所在的服务器Id
      [payInfo setValue:@"10010" forKey:@"roleId"];//当前用户的角色id
      [payInfo setValue:@"1000" forKey:@"channelId"];//渠道id,用于统计
      [payInfo setValue:@"10" forKey:@"amount"];//对应支付项的支付金额,实际支付金额以itunes配置为准
      [payInfo setValue:@"ios demo" forKey:@"extraInfo"];//扩展信息,可以游戏自定义,建议传自有订单号
      [payInfo setValue:@"test.product.1" forKey:@"product"];//itunes 后台配置的对应支付项的productId
      [[LetsGameAPI instance] iap:payInfo forUser:@"" handleCallback:^(NSString* orderId){
          //此处的回调表明支付已经完成,但此时支付不一定成功,需要服务端验证支付结果
          //orderId为gump生成的订单号,此订单号可以在gump server查询此笔支付是否成功
          NSLog(@"iap completed orderId of gumptech:%@",orderId);
      }];
  ### 7、SDK版本测试设置
  若想使用SDK的debug版本,需要在AppDelegate的application: didFinishLaunchingWithOptions:中设置: 
0605edc71   alexYang   接入bluePay第三方支付dem...
125

23a302b86   alexYang   GameSDK 的iOS分支提交,...
126
127
       [[LetsGameAPI instance] decideIsDebug:1];
  不设置或者设置为0时,默认使用release版本