360SDK快速接入

2018-10-10 09:48 更新

1.重要提醒


    本文档面向安卓开发者。

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

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


1.1 必接API说明

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

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

 

1.2 应用服务器

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

 

1.3 编译版本最低要求

android-204.4以上的版本


1.4 PrivateKey计算方法

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

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

例:appSecret=446a0351fa4a7a85970e354d6fd9845e,

appKey=08158bf9f09b949790a63f10c181be52

因此MD5(446a0351fa4a7a85970e354d6fd9845e#08158bf9f09b949790a63f10c181be52)

结果为QHOPENSDK_PRIVATEKEY=09024faa7aa4234803e337b774735176

 

1.5 主Activity设置

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


1.6 Unity相关问题

    暂不支持Unitycocos等其他引擎,只支持eclipse。请将工程先导入eclipse再出apk包。

    如有问题请尝试升级adt


1.7 测试须知

    1.自检工具(check tools用来检验SDK接入是否正确自检时请不要将代码混淆或者加固,请用未加固、未混淆的代码自检。

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

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

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

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

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

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

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

提取smali文件失败。

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

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

2.测试用例是用来帮助CP遍历测试SDK接入之后功能否正常使用,在SDK包的doc文件夹内。


1.8 附加信息

    自检工具(1.3.6及以上版本自检工具在SDK压缩包内)及服务器代码示例下载地址:http://dev.360.cn/wiki/index/id/73

    线上FAQ地址:http://dev.360.cn/wiki/index/id/74

 

    接入中遇到问题先用自检工具自检,自检通过后依然查不出问题可咨询相关人员。

 

    开发者平台相关问题联系

    开平-包打听:2724990365

    百晓生:22069053690

    

    SDK接入相关问题联系

    Sdk-包打听:2833717137

    

    平台加固相关问题请加Q

    360加固宝客服198501978




2.申请APPID、APPKEY和APPSECRET


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

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

 

3.导入资源包


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

blob.png

blob.png

blob.png

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 添加权限

<!--添加360SDK必需要的权限。 -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<uses-permission android:name="android.permission.READ_CONTACTS"/>
<uses-permission android:name="android.permission.WRITE_SMS"/>
<!-- payment -->
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.webkit.permission.PLUGIN" />
<!-- float sdk -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<uses-permission android:name="android.permission.VIBRATE" />
<!-- weixin -->
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<!-- qiku start -->
<!-- 系统账户操作权限 -->
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<!-- 系统设置操作权限 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_SETTINGS" />
<!-- 语音聊天模块权限(如果定制语音聊天模块,则添加该权限) -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!-- QDAS打点SDK所需权限 -->
<uses-permission android:name="android.permission.READ_LOGS" />


4.2 添加activity

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

<!-- 添加360SDK必需的activity:com.qihoo.gamecenter.sdk.activity.ContainerActivity -->
 <activity
        android:name="com.qihoo.gamecenter.sdk.activity.ContainerActivity"
            android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode|layoutDirection"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:exported="true">
            <!-- 支付宝签约后自动跳转到sdk配置 -->
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <action android:name="android.intent.action.VIEW" />
 
                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="android.intent.category.BROWSABLE" />
                <!-- android host的值必须为游戏的包名 -->
                <data android:host="游戏包名"/>
                 <!-- android scheme的值不可修改-->
                <data android:scheme="qihooonlinepay" />
               </intent-filter>
        </activity>
<!-- 360SDK浮窗 浮窗相关配置在1.1.0以及以后的版本中删除了,如果以前接入过SDK的游戏配置中存在浮窗相关的配置,请手动删除 -->
<!-- 个人中心activity -->
<!-- activity
android:name="com.qihoo.gamecenter.sdk.suspend.personal.PersonalActivity"
android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode"
android:windowSoftInputMode="adjustPan"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:screenOrientation="portrait"  >
<intent-filter>
  <action android:name="" />
  </intent-filter>
</activity -->
<!-- receiver
android:name="com.qihoo.gamecenter.sdk.suspend.local.QBootReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver -->
 
<!--service
android:name="com.qihoo.gamecenter.sdk.suspend.remote.QRemoteService"
android:exported="true"
android:process=":QSuspendRemote" >
<intent-filter>
<action android:name="com.qihoo.gamecenter.sdk.suspend.service.action.remote" />
</intent-filter>
</service -->
<!-- service
android:name="com.qihoo.gamecenter.sdk.suspend.local.QLocalService"
android:exported="false" >
<intent-filter>
<action android:name="com.qihoo.gamecenter.sdk.suspend.local.QLocalService" />
</intent-filter>
</service -->
<!-- 360SDK浮窗 End -->
 
<!-- payment activities begin -->
<!--添加360SDK必需的activity:com.qihoopp.qcoinpay.QcoinActivity -->
<activity
android:name="com.qihoopp.qcoinpay.QcoinActivity"
android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize" >
</activity>
<!--alipay sdk begin -->
<activity
     android:name="com.alipay.sdk.app.H5PayActivity"
     android:screenOrientation="portrait" >
</activity>
<!--alipay sdk end -->
<!-- 微信支付界面-->
<activity
     android:name="com.iapppay.pay.channel.weixinpay.WeixinWapPayActivity"
        android:configChanges="screenSize|orientation|keyboard|navigation|layoutDirection"
     android:theme="@android:style/Theme.Translucent" />
<activity
     android:name="com.junnet.heepay.ui.activity.WelcomeActivity"
     android:configChanges="keyboardHidden|orientation|screenSize"
     android:excludeFromRecents="true"
     android:screenOrientation="behind"
     android:theme="@android:style/Theme.Dialog"
     android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />
 <activity
     android:name="com.junnet.heepay.ui.activity.WechatPaymentActivity"
     android:configChanges="keyboardHidden|orientation|screenSize"
     android:excludeFromRecents="true"
     android:screenOrientation="behind"
     android:theme="@android:style/Theme.Dialog"
     android:windowSoftInputMode="stateAlwaysHidden|adjustResize" />
 <activity
     android:name="com.ipaynow.plugin.activity.PayMethodActivity"
     android:configChanges="keyboardHidden|orientation|screenSize"
     android:exported="false"
     android:screenOrientation="behind"
     android:theme="@android:style/Theme.Dialog" />
<activity
android:name="com.ipaynow.plugin.inner_plugin.wechat_plugin.activity.WeChatNotifyActivity"
     android:configChanges="keyboardHidden|orientation|screenSize"
     android:screenOrientation="behind"
     android:theme="@android:style/Theme.NoDisplay" />
<!-- 以下Activity是SDK插件化使用的代理Activity -->
<activity
     android:name="com.qihoo.sdkplugging.host.HostProxyActivity"
android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode|layoutDirection"
     android:theme="@android:style/Theme.Translucent.NoTitleBar"
     android:label="360SDK" >
<intent-filter>
<action android:name="com.qihoo.sdkplugging.host.proxy.activity.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!-- payment activities end -->
 
<!--如下是360游戏实时推送SDK必要声明,不可修改 -->
<receiver
android:name="com.qihoo.psdk.local.QBootReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
 
<activity
android:name="com.qihoo.psdk.app.QStatActivity"
android:launchMode="singleInstance"
    android:theme="@android:style/Theme.Translucent.NoTitleBar" >
</activity>
 
<service
android:name="com.qihoo.psdk.remote.QRemoteService"
android:exported="true"
android:process=":QRemote" >
<intent-filter>
<action android:name="com.qihoo.psdk.service.action.remote" />
</intent-filter>
</service>
<service
 android:name="com.qihoo.psdk.local.QLocalService"
android:exported="true"
 android:process=":QLocal" >
<intent-filter>
     <action android:name="com.qihoo.psdk.service.action.local" />
 </intent-filter>
 </service>
<!-- push sdk end -->
<!--微信相关的activity,如需接入,请直接使用demo中的WXEntryActivity类的代码实现,
类的全名为:“应用包名.wxapi.WXEntryActivity”。
注意1: 除非游戏打算以后永远不会支持微信分享,否则建议游戏把这个actvity的配置加上。
此版本的SDK支持从服务端配置微信分享的appid。
Manifest中的QHOPENSDK_WEIXIN_APPID 字段可以先不配,后续申请到微信的appid可以在服务端配置。
注意2:不要修改此actitiy的android:name属性。
例如:如果游戏的包名为com.a.b.c,那么应该将demo中的WXEntryActivity.java放到
“${工程目录}/src/com/a/b/c/wxapi/WXEntryActivity.java”这个路径下。
并将此java文件中的第一行package声明修改为“package com.a.b.c.wxapi;”
-->
<activity
    android:name=".wxapi.WXEntryActivity"
    android:label="@string/demo_app_name"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:exported="true" />
<!-- UpdateLib start -->
<service
    android:name="com.qihoo.appstore.updatelib.CheckUpdateService"
    android:exported="false" />
<activity android:name="com.qihoo.updatesdk.lib.UpdateTipDialogActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="false"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<!-- UpdateLib end -->
<!-- gameunion plugin start -->
<activity
android:name="com.qihoo.gameunionforsdk.SimpleWebView"      
android:configChanges="fontScale|orientation|keyboardHidden|locale|navigation|screenSize|uiMode|layoutDirection"
 android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- gameunion plugin end -->



5.编码接入


详见技术接入其他章节

 


6.混淆编译


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

-keep class cn.pp.** { *; }
-keep class com.alipay.** {*;}
-keep class com.qihoo.** {*;}
-keep class com.qihoo360.** { *; }
-keep class com.qihoopp.** { *; }
-keep class com.yeepay.safekeyboard.** { *; }
-keep class com.amap.** {*;}
-keep class com.aps.** {*;}
-keep class com.iapppay.** {*;}
-keep class com.ipaynow.** {*;}
-keep class com.junnet.heepay.** {*;}
-keep class com.tencent.mm.** {*;}
-keep class com.coolcloud.uac.android.** {*;}
-keep class tv.cjump.jni.** {*;}
-keep class HttpUtils.** {*;}
-keep class com.a.a.** {*;}
-keep class com.emoji.** {*;}
-keep class com.google.android.exoplayer.** {*;}
-keep class com.ta.utdid2.** {*;}
-keep class com.ut.device.** {*;}
-keep class com.master.flame.danmaku.** {*;}
-keep class tv.cjump.jni.** {*;}
-keep class com.qihoo.sdkplugging.host.** {*;}
-keep public class com.qihoo.gamecenter.sdk.matrix.PluggingHostProxy {*;}


关闭混淆警告可以使用-ignorewarnings参数,或者使用如下配置只关闭SDK类的混淆警告:

-dontwarn cn.pp.**
-dontwarn com.alipay.android.app.**
-dontwarn com.qihoo.**
-dontwarn com.qihoo360.**
-dontwarn com.qihoopp.**
-dontwarn com.yeepay.safekeyboard.**
-dontwarn com.amap.**
-dontwarn org.apache.http.conn.ssl.SSLSocketFactory



7.测试


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

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



8.提交


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



9.审核


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

    客服电话:010-58781044

    客服邮箱:360box@360.cn



10.上线


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

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号