软著办理
精彩课程推荐

[其他渠道] 360移动sdk安卓快速接入文档

[复制链接]
查看: 3002|回复: 0
发表于 2017-6-3 11:07:51 | 显示全部楼层 |阅读模式
1.   重要提醒

本文档面向安卓开发者。

本文档用于指导开发者快速接入360社交带支付SDK,本SDK为安卓应用提供登录、注册、社交、支付等功能。

SDK接入请以SDK包内相应版本文档为准。


1.1   【重要】必接API说明

游戏提交审核时,若文档中的必接接口未接入或接入错误,均会导致审核不通过!!请务必给予重视,以免延误游戏上线时间!!

文档中每一个小节标题上写明【必接】二字的,为必接API,不接则无法过审。未写明【必接】二字的可根据实际需求选择接入。

角色信息接口为必接接口,不接入、接入之后不上传数据、上传过多空数据或上传字段不符合文档要求,均无法通过平台上线审核。请务必接入之后调试调用此接口,然后调用角色信息自测接口,确认data中有数据且数据正确,再上传游戏包。上传游戏包时,请提供至少3个测试使用的360账号及密码,其中至少1个高级别账号。

浮球-福利页面内的切换账号功能为必接功能,如未接入、接入错误,均会导致审核不通过;游戏内部的切换账号为选接功能,可根据游戏需求自行接入。

游戏若不需要支付功能,须先接入支付相关API,但不调用支付模块即可。其他功能亦是。

1.2   应用服务器游戏必须使用自己搭建的应用服务器,不可使用DEMO服务器,url(http://sdbxapp.msdk.mobilem.360.cn) 仅限DEMO示范使用,禁止正式上线游戏把DEMO应用服务器当做正式应用服务器使用。

1.3   编译版本要求

target版本需设置为17。

编译时建议选择Android 4.2或以上的版本。

1.4   PrivateKey计算方法

必须把APPID、APPKEY、PRIVATEKEY三个值填写在AndroidManifest文件中,不能使用@string引用;禁止把AppSecret保存在手机客户端,AndroidManifest中存放的是Private Key,而非App-Secret。

Private Key的算法为:QHOPENSDK_PRIVATEKEY = MD5(appSecret + "#" + appKey),格式为32位小写。

利用自检工具计算privatekey:

打开压缩包目录:\05-自检工具及测试用例\Check_Tools,双击cal_private_key.bat文件,输入游戏应用在开平申请到的appkey和secret参数,工具将自动计算privatekey,将计算得出的32位小写字符串直接黏贴到代码中即可。

1.5   Activity设置

游戏(无论横竖屏)必须在主Activity设置成@android:style/Theme.NoTitleBar.Fullscreen

1.6   Unity相关问题

暂不支持Unity、cocos等其他引擎,仅支持eclipse。请将工程先导入eclipse再出apk包。

如有问题请尝试升级adt。

1.7   测试须知

1.自检工具(check tools)用来检验SDK接入是否正确,在SDK包的“05-自检工具及测试用例”文件夹内。自检时请不要将代码混淆或者加固,请用未加固、未混淆的代码自检。

自检常见问题及解决方法:

Ø  自检结果显示:提取classes.dex失败。

(1)  不应把代码混淆或加固。

(2)  没有把assets下的文件拷贝到工程下。

(3)  编译版本未达到最低要求。

(4)  缺少文件,请对比demo检查是否缺少部分文件夹

(5)  使用Unity或者其他引擎出的apk包,请先将工程导入eclipse然后导出apk包。

Ø  提取smali文件失败。

(1)  不应把代码混淆或加固。

(2)  因工程方法太多,需要进行拆分造成的。把sdk放到第一个dex里面即可。

Ø  自检提示 缺少文件:assets/location_public_key.der。

(1)    der文件在360SDK.jar包中可以找到,可能由于游戏的编译方式,导致自检工具没能识别der文件。开发者可以手动将der文件放到游戏工程的assets文件夹下,再次自检即可通过。

2.测试用例是用来帮助CP遍历测试SDK接入之后功能否正常使用,在SDK包的“05-自检工具及测试用例”文件夹内。



2.申请APPID、APPKEY和APPSECRET

    企业开发者需要在360开放平台 http://dev.360.cn 申请APPID和APPKEY(一个应用只能申请一个appkey)。

    申请指南:http://aw9rrsljhj.l7.yunpan.cn/lk/QztXxKvmXwhkZ


3.导入资源包

    本SDK目前支持Android2.2及以上的系统版本,为兼容Android 4.0及以上的新手机,编译时请使用Android4.2 或以上的版本,360SDK开发环境的配置流程如下(参考下图demo开发环境配置,导入demo工程请以utf-8编码,Android4.2导入):


Demo工程主要的包和类介绍:

com.qihoo.gamecenter.sdk.demosp.activity下的类演示SDK各个接口的调用。游戏接入SDK联调时,请着重参考类:SdkUserBaseActivity:

LandscapeSdkUserActivity.java横屏状态下演示SDK各个接口的调用

PortraitSdkUserActivity.java竖屏状态下掩饰SDK各个接口的调用

SdkUserBaseActivity.java 是LandscapeSdkUserActivity和PortraitSdkUserActivity的基类,是SDK各个接口的调用实现.

com.qihoo.gamecenter.sdk.demosp.payment下是支付相关的基本数据结构和常量。

QihooPayInfo.java , 请求360SDK支付接口时的参数信息类。

com.qihoo.gamecenter.sdk.demosp.utils,demo里面定义的一些工具类。

QihooUserInfo,360用户信息数据。

Utils.java, 一些工具函数。




3.1 导入jar包

将SDK包内的libs目录下的文件(夹)放到应用工程的libs目录下。


3.2 添加assets目录下的文件

将assets目录下的文件(夹)复制到应用工程assets目录下。



4.配置应用工程的AndroidManifest.xml

具体配置参见SDK包内的demo-src目录下的demo源代码。


4.1 添加权限
  1. <font size="3"><pre class="brush:xml;toolbar:false;" style="margin-top: 0.5em; margin-bottom: 0.5em; padding: 0.4em 0.6em; border-radius: 8px; color: rgb(0, 0, 0); font-size: 12px; line-height: 18px; background: rgb(248, 248, 248);"><!--添加360SDK必需要的权限。 -->
  2. <uses-permission android:name="android.permission.INTERNET" />
  3. <uses-permission android:name="android.permission.SEND_SMS" />
  4. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  5. <uses-permission android:name="android.permission.READ_PHONE_STATE" />
  6. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  7. <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
  8. <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
  9. <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
  10. <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
  11. <uses-permission android:name="android.permission.READ_CONTACTS"/>
  12. <uses-permission android:name="android.permission.WRITE_SMS"/>
  13. <!-- payment -->
  14. <uses-permission android:name="android.permission.GET_TASKS" />
  15. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  16. <uses-permission android:name="android.permission.RECEIVE_SMS" />
  17. <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  18. <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  19. <uses-permission android:name="android.permission.RESTART_PACKAGES" />
  20. <uses-permission android:name="android.webkit.permission.PLUGIN" />
  21. <!-- float sdk -->
  22. <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
  23. <uses-permission android:name="android.permission.VIBRATE" />
  24. <!-- weixin -->
  25. <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
  26. <!-- qiku start -->
  27. <!-- 系统账户操作权限 -->
  28. <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  29. <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
  30. <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
  31. <uses-permission android:name="android.permission.USE_CREDENTIALS" />
  32. <!-- 系统设置操作权限 -->
  33. <uses-permission android:name="android.permission.WRITE_SETTINGS" />
  34. <uses-permission android:name="android.permission.READ_SETTINGS" />
  35. <!-- 语音聊天模块权限(如果定制语音聊天模块,则添加该权限) -->
  36. <uses-permission android:name="android.permission.RECORD_AUDIO"/>
  37. <!-- QDAS打点SDK所需权限 -->
  38. <uses-permission android:name="android.permission.READ_LOGS" /></pre></font>
复制代码

4.2 添加activity

注意:必须放入<application>元素区块内

  1. <font size="3"><!-- 添加360SDK必需的activity:com.qihoo.gamecenter.sdk.activity.ContainerActivity -->
  2. <activity
  3.         android:name="com.qihoo.gamecenter.sdk.activity.ContainerActivity"
  4.             android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode|layoutDirection"
  5.             android:theme="@android:style/Theme.Translucent.NoTitleBar"
  6.             android:exported="true">
  7.             <!-- 支付宝签约后自动跳转到sdk配置 -->
  8.             <intent-filter>
  9.                 <action android:name="android.intent.action.MAIN" />
  10.                 <action android:name="android.intent.action.VIEW" />

  11.                 <category android:name="android.intent.category.DEFAULT" />
  12.                 <category android:name="android.intent.category.BROWSABLE" />
  13.                 <!-- android host的值必须为游戏的包名 -->
  14.                 <data android:host="游戏包名"/>
  15.                  <!-- android scheme的值不可修改-->
  16.                 <data android:scheme="qihooonlinepay" />
  17.                </intent-filter>
  18.         </activity>
  19. <!-- 360SDK浮窗 浮窗相关配置在1.1.0以及以后的版本中删除了,如果以前接入过SDK的游戏配置中存在浮窗相关的配置,请手动删除 -->
  20. <!-- 个人中心activity -->
  21. <!-- activity
  22. android:name="com.qihoo.gamecenter.sdk.suspend.personal.PersonalActivity"
  23. android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode"
  24. android:windowSoftInputMode="adjustPan"
  25. android:theme="@android:style/Theme.Translucent.NoTitleBar"
  26. android:screenOrientation="portrait"  >
  27. <intent-filter>
  28.   <action android:name="" />
  29.   </intent-filter>
  30. </activity -->
  31. <!-- receiver
  32. android:name="com.qihoo.gamecenter.sdk.suspend.local.QBootReceiver"
  33. android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
  34. <intent-filter>
  35. <action android:name="android.intent.action.BOOT_COMPLETED" />
  36. </intent-filter>
  37. </receiver -->

  38. <!--service
  39. android:name="com.qihoo.gamecenter.sdk.suspend.remote.QRemoteService"
  40. android:exported="true"
  41. android:process=":QSuspendRemote" >
  42. <intent-filter>
  43. <action android:name="com.qihoo.gamecenter.sdk.suspend.service.action.remote" />
  44. </intent-filter>
  45. </service -->
  46. <!-- service
  47. android:name="com.qihoo.gamecenter.sdk.suspend.local.QLocalService"
  48. android:exported="false" >
  49. <intent-filter>
  50. <action android:name="com.qihoo.gamecenter.sdk.suspend.local.QLocalService" />
  51. </intent-filter>
  52. </service -->
  53. <!-- 360SDK浮窗 End -->

  54. <!-- payment activities begin -->
  55. <!--添加360SDK必需的activity:com.qihoopp.qcoinpay.QcoinActivity -->
  56. <activity
  57. android:name="com.qihoopp.qcoinpay.QcoinActivity"
  58. android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode"
  59.     android:theme="@android:style/Theme.Translucent.NoTitleBar"
  60. android:windowSoftInputMode="stateAlwaysHidden|adjustResize" >
  61. </activity>
  62. <!--alipay sdk begin -->
  63. <activity
  64.      android:name="com.alipay.sdk.app.H5PayActivity"
  65.      android:screenOrientation="portrait" >
  66. </activity>
  67. <!--alipay sdk end -->
  68. <!-- 微信支付界面-->
  69. <activity
  70.      android:name="com.iapppay.pay.channel.weixinpay.WeixinWapPayActivity"
  71.         android:configChanges="screenSize|orientation|keyboard|navigation|layoutDirection"
  72.      android:theme="@android:style/Theme.Translucent" />
  73. <activity
  74.      android:name="com.junnet.heepay.ui.activity.WelcomeActivity"
  75.      android:configChanges="keyboardHidden|orientation|screenSize"
  76.      android:excludeFromRecents="true"
  77.      android:screenOrientation="behind"
  78.      android:theme="@android:style/Theme.Dialog"
  79.      android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />
  80. <activity
  81.      android:name="com.junnet.heepay.ui.activity.WechatPaymentActivity"
  82.      android:configChanges="keyboardHidden|orientation|screenSize"
  83.      android:excludeFromRecents="true"
  84.      android:screenOrientation="behind"
  85.      android:theme="@android:style/Theme.Dialog"
  86.      android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />
  87. <activity
  88.      android:name="com.ipaynow.plugin.activity.PayMethodActivity"
  89.      android:configChanges="keyboardHidden|orientation|screenSize"
  90.      android:exported="false"
  91.      android:screenOrientation="behind"
  92.      android:theme="@android:style/Theme.Dialog" />
  93. <activity
  94. android:name="com.ipaynow.plugin.inner_plugin.wechat_plugin.activity.WeChatNotifyActivity"
  95.      android:configChanges="keyboardHidden|orientation|screenSize"
  96.      android:screenOrientation="behind"
  97.      android:theme="@android:style/Theme.NoDisplay" />
  98. <!-- 以下Activity是SDK插件化使用的代理Activity -->
  99. <activity
  100.      android:name="com.qihoo.sdkplugging.host.HostProxyActivity"
  101. android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode|layoutDirection"
  102.      android:theme="@android:style/Theme.Translucent.NoTitleBar"
  103.      android:label="360SDK" >
  104. <intent-filter>
  105. <action android:name="com.qihoo.sdkplugging.host.proxy.activity.VIEW" />
  106. <category android:name="android.intent.category.DEFAULT" />
  107. </intent-filter>
  108. </activity>
  109. <!-- payment activities end -->

  110. <!--如下是360游戏实时推送SDK必要声明,不可修改 -->
  111. <receiver
  112. android:name="com.qihoo.psdk.local.QBootReceiver"
  113. android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
  114. <intent-filter>
  115. <action android:name="android.intent.action.BOOT_COMPLETED" />
  116. </intent-filter>
  117. <intent-filter>
  118. <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
  119. </intent-filter>
  120. </receiver>

  121. <activity
  122. android:name="com.qihoo.psdk.app.QStatActivity"
  123. android:launchMode="singleInstance"
  124.     android:theme="@android:style/Theme.Translucent.NoTitleBar" >
  125. </activity>

  126. <service
  127. android:name="com.qihoo.psdk.remote.QRemoteService"
  128. android:exported="true"
  129. android:process=":QRemote" >
  130. <intent-filter>
  131. <action android:name="com.qihoo.psdk.service.action.remote" />
  132. </intent-filter>
  133. </service>
  134. <service
  135. android:name="com.qihoo.psdk.local.QLocalService"
  136. android:exported="true"
  137. android:process=":QLocal" >
  138. <intent-filter>
  139.      <action android:name="com.qihoo.psdk.service.action.local" />
  140. </intent-filter>
  141. </service>
  142. <!-- push sdk end -->
  143. <!--微信相关的activity,如需接入,请直接使用demo中的WXEntryActivity类的代码实现,
  144. 类的全名为:“应用包名.wxapi.WXEntryActivity”。
  145. 注意1: 除非游戏打算以后永远不会支持微信分享,否则建议游戏把这个actvity的配置加上。
  146. 此版本的SDK支持从服务端配置微信分享的appid。
  147. Manifest中的QHOPENSDK_WEIXIN_APPID 字段可以先不配,后续申请到微信的appid可以在服务端配置。
  148. 注意2:不要修改此actitiy的android:name属性。
  149. 例如:如果游戏的包名为com.a.b.c,那么应该将demo中的WXEntryActivity.java放到
  150. “${工程目录}/src/com/a/b/c/wxapi/WXEntryActivity.java”这个路径下。
  151. 并将此java文件中的第一行package声明修改为“package com.a.b.c.wxapi;”
  152. -->
  153. <activity
  154.     android:name=".wxapi.WXEntryActivity"
  155.     android:label="@string/demo_app_name"
  156.     android:theme="@android:style/Theme.Translucent.NoTitleBar"
  157.     android:exported="true" />
  158. <!-- UpdateLib start -->
  159. <service
  160.     android:name="com.qihoo.appstore.updatelib.CheckUpdateService"
  161.     android:exported="false" />
  162. <activity android:name="com.qihoo.updatesdk.lib.UpdateTipDialogActivity"
  163.             android:configChanges="keyboardHidden|orientation|screenSize"
  164.             android:exported="false"
  165.             android:screenOrientation="portrait"
  166.             android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
  167. <!-- UpdateLib end -->
  168. <!-- gameunion plugin start -->
  169. <activity
  170. android:name="com.qihoo.gameunionforsdk.SimpleWebView"      
  171. android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode|layoutDirection"
  172. android:theme="@android:style/Theme.Translucent.NoTitleBar" />
  173. <!-- gameunion plugin end --></font>
复制代码


5.编码接入

详见SDK下载压缩包内01文件夹下的接入文档。



6.混淆编译

如果要混淆java代码,请不要混淆联编的jar包中的类。可以添加以下类到proguard配置,排除在混淆之外:

  1. <font size="3">-keep class cn.pp.** { *; }
  2. -keep class com.alipay.** {*;}
  3. -keep class com.qihoo.** {*;}
  4. -keep class com.qihoo360.** { *; }
  5. -keep class com.qihoopp.** { *; }
  6. -keep class com.yeepay.safekeyboard.** { *; }
  7. -keep class com.amap.** {*;}
  8. -keep class com.aps.** {*;}
  9. -keep class com.iapppay.** {*;}
  10. -keep class com.ipaynow.** {*;}
  11. -keep class com.junnet.heepay.** {*;}
  12. -keep class com.tencent.mm.** {*;}
  13. -keep class com.coolcloud.uac.android.** {*;}
  14. -keep class tv.cjump.jni.** {*;}
  15. -keep class HttpUtils.** {*;}
  16. -keep class com.a.a.** {*;}
  17. -keep class com.emoji.** {*;}
  18. -keep class com.google.android.exoplayer.** {*;}
  19. -keep class com.ta.utdid2.** {*;}
  20. -keep class com.ut.device.** {*;}
  21. -keep class com.master.flame.danmaku.** {*;}
  22. -keep class tv.cjump.jni.** {*;}
  23. -keep class com.qihoo.sdkplugging.host.** {*;}
  24. -keep public class com.qihoo.gamecenter.sdk.matrix.PluggingHostProxy {*;}</font>
复制代码
关闭混淆警告可以使用-ignorewarnings参数,或者使用如下配置只关闭SDK类的混淆警告:
  1. <font size="3">-dontwarn cn.pp.**
  2. -dontwarn com.alipay.android.app.**
  3. -dontwarn com.qihoo.**
  4. -dontwarn com.qihoo360.**
  5. -dontwarn com.qihoopp.**
  6. -dontwarn com.yeepay.safekeyboard.**
  7. -dontwarn com.amap.**
  8. -dontwarn org.apache.http.conn.ssl.SSLSocketFactory</font>
复制代码


7.测试

1.  请使用自测工具检查接入完整性;

2.  在 SDK 包中提供了测试用例,用于功能点测试。



8.提交

    经过测试后的 app,请在360移动开放平台http://dev.360.cn/提交 apk 文件



9.审核

    应用提交审核后,360平台会将审批结果以邮件形式进行反馈。

    客服电话:010-58781044

    客服邮箱:360box@360.cn


10.上线

    应用通过审核后将在1个小时后发布上线。







[发帖际遇]: iabsarhawise 发帖时在路边捡到 1 铜币,偷偷放进了口袋. 幸运榜 / 衰神榜

14

主题

15

帖子

56

积分

注册会员

Rank: 2

UID
13
威望
0
贡献
9
铜币
32
T币
0
主题
14
帖子
15
在线时间: 2 小时
注册时间: 2017-5-23
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

商务合作

QQ群:515753718
点击这里给我发消息

扫一扫/点击加群

Copyright;  ©2015-2099  天黑互娱  Powered by游戏开发者社区  技术支持 闭眼就天黑      ( 皖ICP备14007736号-2 )