360SDK快速接入

2018-10-10 09:48 更新

1.重要提醒


    本文檔面向安卓開(kāi)發(fā)者。

    本文檔用于指導(dǎo)開(kāi)發(fā)者快速接入360社交帶支付SDK,本SDK為安卓應(yīng)用提供登錄、注冊(cè)、社交、支付等功能。

    SDK接入請(qǐng)以SDK包內(nèi)相應(yīng)版本文檔為準(zhǔn)。


1.1 必接API說(shuō)明

技術(shù)接入中每一個(gè)小節(jié)標(biāo)題上寫(xiě)明【必接】二字的,為必接API,不接則無(wú)法過(guò)審。未寫(xiě)明【必接】二字的可根據(jù)實(shí)際需求選擇接入。

游戲若不需要支付功能,須先接入支付相關(guān)API,但不調(diào)用支付模塊即可。其他功能亦是。

 

1.2 應(yīng)用服務(wù)器

游戲必須使用自己搭建的應(yīng)用服務(wù)器,不可使用DEMO服務(wù)器,url(http://sdbxapp.msdk.mobilem.#) 僅限D(zhuǎn)EMO示范使用,禁止正式上線游戲把DEMO應(yīng)用服務(wù)器當(dāng)做正式應(yīng)用服務(wù)器使用。

 

1.3 編譯版本最低要求

android-20,4.4以上的版本


1.4 PrivateKey計(jì)算方法

必須把APPIDAPPKEY、PRIVATEKEY三個(gè)值填寫(xiě)在AndroidManifest文件中,不能使用@string引用;禁止把App-Secret保存在手機(jī)客戶端,AndroidManifest中存放的是Private Key,不是App-Secret

Private Key的算法為:QHOPENSDK_PRIVATEKEY = MD5(appSecret + "#" + appKey),32位小寫(xiě)。

例:appSecret=446a0351fa4a7a85970e354d6fd9845e,

appKey=08158bf9f09b949790a63f10c181be52,

因此MD5(446a0351fa4a7a85970e354d6fd9845e#08158bf9f09b949790a63f10c181be52)

結(jié)果為QHOPENSDK_PRIVATEKEY=09024faa7aa4234803e337b774735176

 

1.5 主Activity設(shè)置

    游戲(無(wú)論橫豎屏)必須在主Activity設(shè)置成@android:style/Theme.NoTitleBar.Fullscreen


1.6 Unity相關(guān)問(wèn)題

    暫不支持Unity、cocos等其他引擎,只支持eclipse。請(qǐng)將工程先導(dǎo)入eclipse再出apk包。

    如有問(wèn)題請(qǐng)嘗試升級(jí)adt。


1.7 測(cè)試須知

    1.自檢工具(check tools用來(lái)檢驗(yàn)SDK接入是否正確。自檢時(shí)請(qǐng)不要將代碼混淆或者加固,請(qǐng)用未加固、未混淆的代碼自檢。

自檢常見(jiàn)問(wèn)題及解決方法:

    自檢結(jié)果顯示:提取classes.dex失敗。

(1)  不應(yīng)把代碼混淆或加固。

(2)  沒(méi)有把assets下的文件拷貝到工程下。

(3)  編譯版本未達(dá)到最低要求。

(4)  缺少文件,請(qǐng)對(duì)比demo檢查是否缺少部分文件夾

(5)  使用Unity或者其他引擎出的apk包,請(qǐng)先將工程導(dǎo)入eclipse然后導(dǎo)出apk包。

提取smali文件失敗。

(1)  不應(yīng)把代碼混淆或加固。

(2)  因工程方法太多,需要進(jìn)行拆分造成的。把sdk放到第一個(gè)dex里面即可。

2.測(cè)試用例是用來(lái)幫助CP遍歷測(cè)試SDK接入之后功能否正常使用,在SDK包的doc文件夾內(nèi)。


1.8 附加信息

    自檢工具(1.3.6及以上版本自檢工具在SDK壓縮包內(nèi))及服務(wù)器代碼示例下載地址:http://dev.#/wiki/index/id/73

    線上FAQ地址:http://dev.#/wiki/index/id/74

 

    接入中遇到問(wèn)題先用自檢工具自檢,自檢通過(guò)后依然查不出問(wèn)題可咨詢相關(guān)人員。

 

    開(kāi)發(fā)者平臺(tái)相關(guān)問(wèn)題聯(lián)系

    開(kāi)平-包打聽(tīng):2724990365

    百曉生:22069053690

    

    SDK接入相關(guān)問(wèn)題聯(lián)系

    Sdk-包打聽(tīng):2833717137

    

    平臺(tái)加固相關(guān)問(wèn)題請(qǐng)加Q

    360加固寶客服198501978




2.申請(qǐng)APPID、APPKEY和APPSECRET


    企業(yè)開(kāi)發(fā)者需要在360開(kāi)放平臺(tái) http://dev.# 申請(qǐng)APPIDAPPKEY(一個(gè)應(yīng)用只能申請(qǐng)一個(gè)appkey)。

    申請(qǐng)指南:http://aw9rrsljhj.l7.yunpan.cn/lk/QztXxKvmXwhkZ

 

3.導(dǎo)入資源包


    本SDK目前支持Android2.2及以上的系統(tǒng)版本,為兼容Android 4.0及以上的新手機(jī),編譯時(shí)請(qǐng)使用Android4.2 或以上的版本,360SDK開(kāi)發(fā)環(huán)境的配置流程如下(參考下圖demo開(kāi)發(fā)環(huán)境配置,導(dǎo)入demo工程請(qǐng)以utf-8編碼,Android4.2導(dǎo)入):

blob.png

blob.png

blob.png

Demo工程主要的包和類(lèi)介紹:

com.qihoo.gamecenter.sdk.demosp.activity下的類(lèi)演示SDK各個(gè)接口的調(diào)用。游戲接入SDK聯(lián)調(diào)時(shí),請(qǐng)著重參考類(lèi):SdkUserBaseActivity:

LandscapeSdkUserActivity.java橫屏狀態(tài)下演示SDK各個(gè)接口的調(diào)用

PortraitSdkUserActivity.java豎屏狀態(tài)下掩飾SDK各個(gè)接口的調(diào)用

SdkUserBaseActivity.java 是LandscapeSdkUserActivity和PortraitSdkUserActivity的基類(lèi),是SDK各個(gè)接口的調(diào)用實(shí)現(xiàn).

com.qihoo.gamecenter.sdk.demosp.payment下是支付相關(guān)的基本數(shù)據(jù)結(jié)構(gòu)和常量。

QihooPayInfo.java , 請(qǐng)求360SDK支付接口時(shí)的參數(shù)信息類(lèi)。

com.qihoo.gamecenter.sdk.demosp.utils,demo里面定義的一些工具類(lèi)。

QihooUserInfo,360用戶信息數(shù)據(jù)。

Utils.java, 一些工具函數(shù)。




3.1 導(dǎo)入jar包

SDK包內(nèi)的libs目錄下的文件(夾)放到應(yīng)用工程的libs目錄下。


3.2 添加assets目錄下的文件

assets目錄下的文件(夾)復(fù)制到應(yīng)用工程assets目錄下。



4.配置應(yīng)用工程的AndroidManifest.xml


具體配置參見(jiàn)SDK包內(nèi)的demo-src目錄下的demo源代碼。


4.1 添加權(quán)限

<!--添加360SDK必需要的權(quán)限。 -->
<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 -->
<!-- 系統(tǒng)賬戶操作權(quán)限 -->
<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" />
<!-- 系統(tǒng)設(shè)置操作權(quán)限 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.READ_SETTINGS" />
<!-- 語(yǔ)音聊天模塊權(quán)限(如果定制語(yǔ)音聊天模塊,則添加該權(quán)限) -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<!-- QDAS打點(diǎn)SDK所需權(quán)限 -->
<uses-permission android:name="android.permission.READ_LOGS" />


4.2 添加activity

注意:必須放入<application>元素區(qū)塊內(nèi)

<!-- 添加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">
            <!-- 支付寶簽約后自動(dòng)跳轉(zhuǎn)到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浮窗 浮窗相關(guān)配置在1.1.0以及以后的版本中刪除了,如果以前接入過(guò)SDK的游戲配置中存在浮窗相關(guān)的配置,請(qǐng)手動(dòng)刪除 -->
<!-- 個(gè)人中心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游戲?qū)崟r(shí)推送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 -->
<!--微信相關(guān)的activity,如需接入,請(qǐng)直接使用demo中的WXEntryActivity類(lèi)的代碼實(shí)現(xiàn),
類(lèi)的全名為:“應(yīng)用包名.wxapi.WXEntryActivity”。
注意1: 除非游戲打算以后永遠(yuǎn)不會(huì)支持微信分享,否則建議游戲把這個(gè)actvity的配置加上。
此版本的SDK支持從服務(wù)端配置微信分享的appid。
Manifest中的QHOPENSDK_WEIXIN_APPID 字段可以先不配,后續(xù)申請(qǐng)到微信的appid可以在服務(wù)端配置。
注意2:不要修改此actitiy的android:name屬性。
例如:如果游戲的包名為com.a.b.c,那么應(yīng)該將demo中的WXEntryActivity.java放到
“${工程目錄}/src/com/a/b/c/wxapi/WXEntryActivity.java”這個(gè)路徑下。
并將此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.編碼接入


詳見(jiàn)技術(shù)接入其他章節(jié)

 


6.混淆編譯


如果要混淆java代碼,請(qǐng)不要混淆聯(lián)編的jar包中的類(lèi)。可以添加以下類(lèi)到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 {*;}


關(guān)閉混淆警告可以使用-ignorewarnings參數(shù),或者使用如下配置只關(guān)閉SDK類(lèi)的混淆警告:

-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.測(cè)試


1.  請(qǐng)使用自測(cè)工具檢查接入完整性;

2.  在 SDK 包中提供了測(cè)試用例,用于功能點(diǎn)測(cè)試。



8.提交


    經(jīng)過(guò)測(cè)試后的 app,請(qǐng)?jiān)?60移動(dòng)開(kāi)放平臺(tái)http://dev.#/提交 apk 文件



9.審核


    應(yīng)用提交審核后,360平臺(tái)會(huì)將審批結(jié)果以郵件形式進(jìn)行反饋。

    客服電話:010-58781044

    客服郵箱:360box@#



10.上線


    應(yīng)用通過(guò)審核后將在1個(gè)小時(shí)后發(fā)布上線。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)