乾貨| 如何在自有App中引入小遊戲?
之前有跟大家分享過ios系統上引入FinClip SDK,並將小程式遊戲執行到自有App 中,這周就繼續分享如何在Android系統中引入FinClip SDK。
近期FinClip官方正在舉行小遊戲支援的功能內測,有興趣的朋友可以去看看。手動指引:小遊戲內測活動 https://www.finclip.com/blog/chan-pin-nei-ce/
實現效果:在自有 App 中實現小程式遊戲執行; 使用技術: FinClip (即可使用); 測試機:Android; 測試Demo:
在 Android 專案中引入 FinClip SDK ,實現小程式遊戲在 App 中執行,操作如下:
第一步:
獲取憑據( SDK KEY 及 SDK SECRET)
首先,整合 SDK 需要先在
FinClip 平臺中建立應用並繫結小程式遊戲應用,獲得每個應用專屬的SDK KEY及SDK SECRET後,隨後就可以在整合 SDK 時填寫對應的引數。開啟小程式時 SDK 會自動初始化,並校驗SDK KEY,SDK SECRET與BundleID(Application ID)是否正確,這一步正確了才能初始化成功並正常使用。
1.1 建立小程式遊戲
需要登入
FinClip管理後臺「宿主應用-新增合作應用」,完成小遊戲應用建立;
註冊使用者需要登入「宿主應用-新增合作應用」,完成應用建立
1.2 獲取 SDK KEY 及 SDK SECRET
新增應用後,可以展開應用名稱,在下方的列表中點選「新增 BundleID」,在出現的彈窗中輸入需要繫結應用的 BundleID。
配置 BundleID
完成 BundleID 的填寫,並點選確定按鈕後,您會看到如上圖所示的介面。其中的SDK KEY,SDK SECRET與API SERVER是您在整合小程式 SDK 時需要要到的憑據。
⚠️請注意:
-
SDK KEY:是合作應用能使用小程式 SDK 的憑證,如果 SDK Key 校驗失敗,則SDK 的所有 Api 都無法使用。
-
SDK SECERT:是訪問服務的安全證照,不要給第三方。
第二步:匯入 SDK
2.1 在工程的build.gradle中需要配置的內容
在工程的build.gradle中新增 maven 倉庫的地址:
maven { url " credentials { username "applet" password "123321" }}
由於 SDK 中部分程式碼使用了 Kotlin 來編寫,因此需要工程的
build.gradle
中新增 Kotlin 的 gradle 外掛:
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61"
工程的
build.gradle
的完整配置如下:
buildscript { repositories { google() jcenter() } dependencies { classpath "com.android.tools.build:gradle:3.5.2" classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61" }}allprojects { repositories { google() jcenter() maven { url " credentials { username "applet" password "123321" } } }}task clean(type: Delete) { delete rootProject.buildDir}
2.2 在gradle中依賴SDK
在
gradle
檔案的
dependencies
中新增對
finapplet
的依賴:
implementation 'com.finogeeks.lib:finapplet:x.y.z' //x.y.z須替換為具體的版本號
注意:SDK 中的動態庫是被加固過的,被加固過的動態庫在編譯打包時不能被壓縮,否則載入的時候會報錯。
因此需要在 App module 下的
build.gradle
中增加
doNotStrip
配置:
packagingOptions { // libsdkcore.so、libfin-yuvutil.so是被加固過的,不能被壓縮,否則載入動態庫時會報錯 doNotStrip "*/x86/libsdkcore.so" doNotStrip "*/x86_64/libsdkcore.so" doNotStrip "*/armeabi/libsdkcore.so" doNotStrip "*/armeabi-v7a/libsdkcore.so" doNotStrip "*/arm64-v8a/libsdkcore.so" doNotStrip "*/x86/libfin-yuvutil.so" doNotStrip "*/x86_64/libfin-yuvutil.so" doNotStrip "*/armeabi/libfin-yuvutil.so" doNotStrip "*/armeabi-v7a/libfin-yuvutil.so" doNotStrip "*/arm64-v8a/libfin-yuvutil.so"}
2.3 配置混淆規則
在 App 的 proguard-rules.pro 檔案裡面新增混淆配置
-keep class com.finogeeks.** {*;}
第三步:初始化 FinClip SDK
從
2.13.102
版本開始 SDK支援配置多個伺服器資訊,可以同時開啟不同環境中的小程式。配置引數如下:
3.1 小程式框架的配置資訊
// 伺服器資訊集合List<FinStoreConfig> storeConfigs = new ArrayList<>();// 伺服器1的資訊FinStoreConfig storeConfig1 = new FinStoreConfig( "SDK Key資訊", // SDK Key "SDK Secret資訊", // SDK Secret "伺服器1的地址", // 伺服器地址 "伺服器1的資料上報伺服器地址", // 資料上報伺服器地址 "/api/v1/mop/", // 伺服器介面請求路由字首 "", "加密方式" // 加密方式,國密:SM,md5: MD5(推薦));storeConfigs.add(storeConfig1);// 伺服器2的資訊FinStoreConfig storeConfig2 = new FinStoreConfig( "SDK Key資訊", // SDK Key "SDK Secret資訊", // SDK Secret "伺服器2的地址", // 伺服器地址 "伺服器2的資料上報伺服器地址", // 資料上報伺服器地址 "/api/v1/mop/", // 伺服器介面請求路由字首 "", "加密方式" // 加密方式,國密:SM,md5: MD5(推薦));storeConfigs.add(storeConfig2);FinAppConfig config = new FinAppConfig.Builder() .setFinStoreConfigs(storeConfigs) // 伺服器資訊集合 .build();
3.2 設定SDK初始化狀態回撥
實現FinCallback介面,用於監聽SDK初始化狀態:
// SDK初始化結果回撥,用於接收SDK初始化狀態FinCallback<Object> callback = new FinCallback<Object>() { @Override public void onSuccess(Object result) { // SDK初始化成功 } @Override public void onError(int code, String error) { // SDK初始化失敗 Toast.makeText(AppletApplication.this, "SDK初始化失敗", Toast.LENGTH_SHORT).show(); } @Override public void onProgress(int status, String error) { }};
3.3 初始化SDK
呼叫初始化介面初始化SDK:
FinAppClient.INSTANCE.init(this, config, callback);
3.4 SDK初始化多程式處理
DK採用多程式機制實現,每個小程式執行在獨立的程式中,即一個小程式對應一個程式,在初始化SDK時,要特別注意的一點是:
小程式程式在建立的時候不需要執行任何初始化操作,即使是小程式SDK的初始化,也不需要在小程式程式中執行
。
例如:應用使用了一些第三方庫,這些庫需要在應用啟動時先初始化,那麼在
Application
中執行初始化時,只有當前程式為宿主程式時才需要初始化這些第三方庫,小程式程式是不需要初始化這些庫的。
因此,在初始化SDK之前,一定要判斷當前程式是哪一個程式,如果是小程式程式,就不進行任何操作了:
if (FinAppClient.INSTANCE.isFinAppProcess(this)) { return;}
以上即為初始化SDK的整個流程。完整程式碼如下:
package com.example.finogeeks.appletdemo;import android.os.Process;import android.support.multidex.MultiDexApplication;import android.text.TextUtils;import android.widget.Toast;import com.example.finogeeks.appletdemo.api.ApiOpenPage;import com.example.finogeeks.appletdemo.api.ApiOpenPageForResult;import com.example.finogeeks.appletdemo.api.DrawModule;import com.example.finogeeks.appletdemo.util.ProcessUtilKt;import com.finogeeks.lib.applet.client.FinAppClient;import com.finogeeks.lib.applet.client.FinAppConfig;import com.finogeeks.lib.applet.interfaces.FinCallback;/** * 應用的{@link android.app.Application} */public class AppletApplication extends MultiDexApplication { @Override public void onCreate() { super.onCreate(); if (FinAppClient.INSTANCE.isFinAppProcess(this)) { // 小程式程式不執行任何初始化操作 return; } // 伺服器資訊集合 List<FinStoreConfig> storeConfigs = new ArrayList<>(); // 伺服器1的資訊 FinStoreConfig storeConfig1 = new FinStoreConfig( "SDK Key資訊", // SDK Key "SDK Secret資訊", // SDK Secret "伺服器1的地址", // 伺服器地址 "伺服器1的資料上報伺服器地址", // 資料上報伺服器地址 "/api/v1/mop/", // 伺服器介面請求路由字首 "", "加密方式" // 加密方式,國密:SM,md5: MD5(推薦) ); storeConfigs.add(storeConfig1); // 伺服器2的資訊 FinStoreConfig storeConfig2 = new FinStoreConfig( "SDK Key資訊", // SDK Key "SDK Secret資訊", // SDK Secret "伺服器2的地址", // 伺服器地址 "伺服器2的資料上報伺服器地址", // 資料上報伺服器地址 "/api/v1/mop/", // 伺服器介面請求路由字首 "", "加密方式" // 加密方式,國密:SM,md5: MD5(推薦) ); storeConfigs.add(storeConfig2); FinAppConfig config = new FinAppConfig.Builder() .setFinStoreConfigs(storeConfigs) // 伺服器資訊集合 .build(); FinAppClient.INSTANCE.init(this, config, new FinCallback<Object>() { @Override public void onSuccess(Object result) { } @Override public void onError(int code, String error) { Toast.makeText(AppletApplication.this, "SDK初始化失敗", Toast.LENGTH_SHORT).show(); } @Override public void onProgress(int status, String error) { } }); }}
第四步:啟動小程式
在平臺中上架小程式之後,我們就可以透過呼叫SDK中啟動小程式的介面來開啟小程式了。啟動小程式的程式碼如下:
FinAppClient.INSTANCE.getAppletApiManager().startApplet(this, "5e0dc1f574193e00010d73c1");
如果啟動小程式時需要攜帶啟動引數,則可以呼叫支援傳遞啟動引數的介面,
開啟效果如下:
大家可以親自上手試試看咯,有任何問題可以向官方提出哦!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70023421/viewspace-2929801/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【出海乾貨】中國遊戲出海——深入中東遊戲
- 乾貨:遊戲中“沙漠”場景的設計手法遊戲
- 後疫情時代,小遊戲的機遇在哪裡?2020年遊聯社高峰論壇QQ小遊戲乾貨分享遊戲
- 小遊戲榜一爆款!《尋道大千》乾貨分享 | Created with Cocos遊戲
- 【乾貨】論玩家在遊戲社交中的個體構建遊戲
- 技術乾貨| 如何在MongoDB中輕鬆使用GridFS?MongoDB
- 乾貨分享 | UE遊戲滑鼠雙擊判定遊戲
- 小遊戲如何實現千萬月流水?《全民養鯤》周勇乾貨分享遊戲
- 乾貨:射擊遊戲中強烈的手感如何營造出來?遊戲
- 技術乾貨 | 六分鐘學會使用 HBuilder 引入構建 mPaaS 小程式UI
- 投放乾貨:QQ小遊戲買量現狀、優化方法及變現案例遊戲優化
- 史上最全遊戲策劃入門乾貨(一)遊戲
- 史上最全遊戲策劃入門乾貨(三)遊戲
- 史上最全遊戲策劃入門乾貨(二)遊戲
- 史上最全遊戲策劃入門乾貨(四)遊戲
- 【乾貨】遊戲介面設計 (一)核心設計遊戲
- 讓小程式在自有App中啟動的技術來了:mPaaS小程式架構深度解析APP架構
- 【java乾貨】java怎麼寫APPJavaAPP
- 【乾貨】遊戲介面設計 (五)表現設計遊戲
- 【乾貨】遊戲介面設計 (四)體驗設計遊戲
- 【乾貨】遊戲介面設計 (二)結構設計遊戲
- 【乾貨】遊戲介面設計 (三)資訊設計遊戲
- 超乾貨 | 手把手教你快速構建一個企業自有“微信”!
- 小乾貨~ NFS在Linux系統中的應用NFSLinux
- 【乾貨】如何設計一個Arkane遊戲的關卡遊戲
- 乾貨貼:俯瞰2021遊戲出海營銷最新動向遊戲
- 網路遊戲中的遊戲模式如MMOPRG,PRG,NPRG等是什麼意思?遊戲模式
- 1年賺22.4億流量,抖音小遊戲如“洪水猛獸”遊戲
- 遊點乾貨 | GUI是如何幫助遊戲進行敘事的?GUI遊戲
- 純乾貨分享: 如何在 React 框架中使用SpreadJSReact框架JS
- 如何在遊戲陪玩app原始碼中實現簡訊驗證碼登入?遊戲APP原始碼
- 乾貨快收藏!遊戲策劃必看的FPS主要技巧拆解遊戲
- 遊戲出海|如何將中文遊戲引入西方市場遊戲
- AI客服上線 乾貨 乾貨 全是乾貨!AI
- ReactNative乾貨分享——視訊播放器AppReact播放器APP
- 【乾貨】每個APP都用得上的SegmentViewAPPView
- 技術乾貨:Applewatch APP設計規範APP
- (乾貨)微信小程式元件封裝微信小程式元件封裝