Skip to content

Android海外AABアクセスドキュメント

:::情報の説明

  • AABは、Google Playにアプリケーションをアップロードするためのリソース形式です
  • (Android 14システムバージョンに適合する必要があります。
  • Unityを使用してAndroid Studioプロジェクトパッケージをエクスポートすることをお勧めします
  • ゲームが初めて接続されている場合、Androidフォンのフルスクリーン適応の良い仕事をしなければなりません(一般に、一般的な適応方法はデフォルトでフルスクリーンに表示されます。トップノッチまたはカメラ関連の関係は、ゲーム関連のUI関数に影響を与えることができません。
  • SDKを呼び出すすべてのインターフェイスが()に配置されていることを確認してください
  • UnityのインターフェイスはJavaに呼ばれ、UIスレッドに切り替えてからSDKインターフェイスと呼ばれる必要があることに注意してください。
  • 必ずドキュメントを詳細に確認してください。一部のアクセス部品について質問がある場合は、ドッキンググループのテクニカルチームと直接通信できます。
  • このドキュメントは随時更新されます。インターフェイスの変更が関係する場合、メッセージはグループ内で同期されます。その他の更新については、確認してくださいAndroid SDK更新
  • 続行するにはここをクリックしてくださいAndroid-AAB-Demo 下载 :::

アクセスプロセス

:::情報の説明

  • 1.操作アプリケーションの関連パラメーターと構成を見つけます。現在、アクセスには、Google-services.json、access.config、およびkeystore署名ファイルの3つの構成ファイルが必要です。
  • 2。デモサンプルプロジェクトをダウンロードして、ファイルを使用して、デモの関連するプロジェクト構造を構成します
  • 3.リモートウェアハウスの構成を構成し、関連するインターフェイスを呼び出す :::

パラメーター構成(

プロジェクト:build.gradle

xml
buildscript {
    repositories {
        maven {
            url 'https://sdk.wdyxgames.com/nexus/repository/sdk-public/'
        }
    }
}

allprojects {
    repositories {
        maven {
            url 'https://sdk.wdyxgames.com/nexus/repository/sdk-public/'
        }
    }
}

または、settings.gradleで構成します

xml
pluginManagement {
    repositories {
        maven {
            url 'https://sdk.wdyxgames.com/nexus/repository/sdk-public/'
        }
    }
}
dependencyResolutionManagement {

    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        maven {
            url 'https://sdk.wdyxgames.com/nexus/repository/sdk-public/'
        }
    }
}

アプリ:build.gradle configuration(

注:APKがパッケージが外れている場合、Hoolai-Coreライブラリのみを参照できます。

xml
//引入google插件 id 'com.google.gms.google-services'
plugins {
    id 'com.android.application'
    id 'com.google.gms.google-services'
}

//引入依赖库
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //hoolai-core(必接)
    implementation 'com.hoolai.access.open:hoolai-core:1.0.4.0-global'
    //access-native(必接)
    implementation 'com.hoolai.access.platform:access-native:0.1.2.1425-global'
    //fangzhou(必接)
    implementation 'com.hoolai.access.open.fangzhou:fangzhou:4.5.16.10'
    //基础功能模块,登录/支付/分享等(必接)
    implementation 'com.hoolai.oversea:hl-oversea-global:1.0.5.0' 
    //aihelp(必接)
    implementation 'com.hoolai.oversea.aihelp:aihelp:1.0.0.1'
    //appsflyer(必接)
    implementation 'com.hoolai.oversea.appsflyer:appsflyer:1.0.0.2'
    //firebase(必接)
    implementation 'com.hoolai.oversea.firebase:firebase:1.0.1.0'
    //facebooklinks(必接)
    implementation 'com.hoolai.oversea.links:facebooklinks:1.0.1.0'
    //openInstall(选接)
    implementation 'com.hoolai.oversea.opins:openInstall:1.0.0.0'
    //crashlytics(⚠️该库已废弃,和firebase类库已合并)
    //implementation 'com.hoolai.oversea.crash:crashlytics:1.0.0.0'
}

androidmanifest.xml configuration(

次の構成は、Google認定ログイン、Facebook認定ログイン、Google Play Games Services V2認定ログイン構成です。あなたがそれを必要としない場合、あなたはそれを構成することができません(ここでデモで確認されました)

javascript
<!--Games Services Sign In v2 如要使用PGS登录必须配置!否则不需要加-->
<meta-data android:name="com.google.android.gms.games.APP_ID"
    android:value="@string/game_services_project_id"/>
<!--Games Services Sign In v2 如要使用PGS登录必须配置!否则不需要加-->

<!--注意需为游戏的启动类 Activity 中配置intent-filter!以下为示例无需 copy!-->
<activity
    android:name="com.hoolai.access.demo.GameActivity"
    android:hardwareAccelerated="true"
    android:launchMode="singleTask"
    android:theme="@style/HlAccountTransparent"
    android:configChanges="orientation|keyboardHidden|screenSize"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    
    <!-- SDK内部配置(必须) 其中scheme的value值为accesssdk+channelId-->
    <intent-filter>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:scheme="accesssdk1"/>
    </intent-filter>
    <!-- SDK内部配置(必须) 其中scheme的value值为accesssdk+channelId-->
</activity>
<!--注意需为游戏的启动类 Activity 中配置intent-filter!示例无需 copy!-->

<!--Facebook login share-->
<provider
    android:name="com.facebook.FacebookContentProvider"
    android:authorities="com.facebook.app.FacebookContentProvider1234567890"
    android:exported="true" />

<meta-data
    android:name="com.facebook.sdk.ApplicationId"
    android:value="@string/facebook_app_id" />

<meta-data
    android:name="com.facebook.sdk.ClientToken"
    android:value="@string/facebook_client_token" />

<activity
    android:name="com.facebook.CustomTabActivity"
    android:exported="true">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />

        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />

        <data android:scheme="@string/fb_login_protocol_scheme" />
    </intent-filter>
</activity>
<!--Facebook end-->

上記のパラメーター構成の場所は、res/values/strings.xmlファイルで構成されており、操作によって次のパラメーターが提供されます。

javascript
<string name="facebook_app_id">facebookAppId</string>
<string name="fb_login_protocol_scheme">fbScheme</string>
<string name="facebook_client_token">facebookClientToken</string>
<string translatable="false"  name="game_services_project_id">googleProjectId</string>

インターフェイスドキュメント

ライフサイクルアクセス

アプリケーションアクセス(

方法1:ゲームにカスタムアプリケーションがない場合は、hlapplicationを使用します。 androidmanifest.xmlの<アプリケーション名タグ属性構成を参照してください

方法2:ゲームにカスタムアプリケーションがある場合、hlapplicationを継承できます。

方法3:ゲームにカスタムアプリケーションがあり、hlapplicationを継承できない場合、アプリケーションのライフサイクル中に次の呼び出しが必要です。

java
public class YourApplication extends YourBaseApplication {

    @Override
    public void onCreate() {
        super.onCreate();
        FastSdk.onApplicationCreate(this);
    }

    @Override
    public void onTerminate() {
        super.onTerminate();
        FastSdk.onTerminate(this);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        FastSdk.onConfigurationChanged(this, newConfig);
    }

    @Override
    protected void attachBaseContext(Context context) {
        super.attachBaseContext(context);
        FastSdk.attachBaseContext(this, context);
    }
}

アクティビティライフサイクルアクセス(

java
@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    FastSdk.onSaveInstanceState(outState);
}

@Override
protected void onStart() {
    super.onStart();
    FastSdk.onStart(this);
}

@Override
protected void onResume() {
    super.onResume();
    FastSdk.onResume(this);
}

@Override
protected void onStop() {
    super.onStop();
    FastSdk.onStop(this);
}

@Override
protected void onPause() {
    super.onPause();
    FastSdk.onPause(this);
}

@Override
protected void onRestart() {
    super.onRestart();
    FastSdk.onRestart(this);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    FastSdk.onDestroy(this);
}

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    FastSdk.onNewIntent(intent);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    FastSdk.onActivityResult(this, requestCode, resultCode, data);
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    FastSdk.onRequestPermissionsResult(requestCode, permissions, grantResults);
}

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    FastSdk.onConfigurationChanged(this, newConfig, getResources());
}

@Override
public void onBackPressed() {
    FastSdk.exit();
}

@Override
public Resources getResources() {
    return FastSdk.getResources(super.getResources());
}
//以下为更新内容
@Override
protected void onRestoreInstanceState(@NonNull Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    FastSdk.onRestoreInstanceState(savedInstanceState);
}

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    super.onWindowFocusChanged(hasFocus);
    FastSdk.onWindowFocusChanged(hasFocus);
}

SDK機能アクセス

初期化(

::: 警告

  • SDKの初期化中、ゲームのブラックスクリーンを解くための提案:「Unity_static_Splash」と呼ばれる画像を準備し、それをRES/Drawableディレクトリにコピーします。
  • このインターフェイスは、ゲームの開始後に最初に呼ばれます。ホットアップデート/バージョンの検出/ゲームの初期化/ログインとその他の機能を呼び出すことができます。
  • 初期化コールバックが受信されない、またはOnInitFailedを受信した場合、ゲームは後続の関数呼び出しを行うことができません。
  • 初期化が失敗した場合は、ユーザーがゲームを再起動するようにガイドすることをお勧めします。 :::
java
//游戏主Activity的onCreate中
//SDK初始化回调
FastSdk.hlSystemListener = new HLSystemListener() {
    @Override
    public void onInitSuccess(InitResult initResult) {
        //gameId,channelId,channel
    }

    @Override
    public void onInitFailed(String reason) {
       
    }

    @Override
    public void onCustomExit() {
        /* demo 只作为参考,游戏应该根据自己所需逻辑实现
         * 渠道没有退出二次确认框
         * 根据需要加二次确认框
         */
        //渠道不存在退出界面,如百度移动游戏等,此时需在此处弹出游戏退出确认界面,否则会出现渠道审核不通过情况
        //游戏实现自己的退出界面 ,实现退出逻辑,请勿直接照搬demo
        //根据需要加二次确认框
        new AlertDialog.Builder(GameActivity.this)
                .setTitle("游戏退出弹窗")
                .setMessage("我是游戏的弹窗界面哦")
                .setNegativeButton("取消", null)
                .setPositiveButton("确定", (dialog, which) -> onExitSuccess(s))
                .setCancelable(false).show();
    }

    @Override
    public void onExitSuccess(String result) {
        //如果渠道有退出界面,点击渠道退出后会触发该回调用于释放游戏资源,也有可能此时程序已被kill不会执行到此处,可预留处理一些资源释放操作
        //处理退出逻辑
        moveTaskToBack(true);
        finish();
        //建议游戏按照下面代码逻辑,退出程序兼容性最好,否则可能会造成oppop、vivo等渠道退出不彻底,导致再次点击启动应用黑屏。
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        startActivity(intent);
        android.os.Process.killProcess(android.os.Process.myPid());
    }

    @Override
    public void onUpdate(String data) {
        //版本升级
    }
};

//SDK账号回调
FastSdk.hlAccountListener = new HLAccountListener() {
    @Override
    public void onRefreshUser(LoginResult result) {
         //小号切换,此回调中之需要游戏验证用户合法性问题,无小号可忽略
         //如果游戏不支持内部切换玩家信息,游戏需要调用登出,再重新登录(不需要重新初始化)
    }

    @Override
    public void onLoginSuccess(LoginResult result) {
         
    }

    @Override
    public void onLoginFailed(String reason) {
    
    }

    @Override
    public void onLogout(Object... var1) {
       
    }
};

//SDK支付回调
FastSdk.hlPaymentListener = new HLPaymentListener() {
    @Override
    public void onPaySuccess(String result) {
        
    }

    @Override
    public void onPayFailed(String reason) {

    }
    
    
    @Override
    public void onQuerySuccess(List<GoodsInfo> list) {
        //海外游戏必须处理,获取商品列表用于展示
    }
};

//SDK分享回调
FastSdk.hlShareListener = new HLShareListener() {
    @Override
    public void onShareSuccess() {

    }

    @Override
    public void onShareFailed(String reason) {

    }
};

//SDK初始化,此方法需要在启动游戏时的隐私权限回调方法中调用
//后面的所有SDK功能都需要在初始化回调成功之后调用
//注意:调用onCreate之前需要将以上用到的接口先进行实例化
FastSdk.onCreate(this);

ログイン(

::: 警告

  • この方法を呼び出すときは、「game_init_result」イベントが実行されていることを確認してください。詳細については、参照してください游戏自定义报送
  • 初期化がコールバックを受け取らないか、初期化が失敗するとログインインターフェイスが禁止されています :::
java
FastSdk.login();

ユーザーセンター(

java
//调用时机必须在登录成功之后
FastSdk.openAccountCenter(activity);

製品リスト情報を取得します(

java
//调用时机,必须在确认登录成功之后使用!
//必须在登录成功之后或商品详情界面展示之前调用,注意查询成功后会通过FastSdk.hlPaymentListener接口中将所有商品信息回调回来
//注意由于商品信息获取为异步获取,如登录成功之后由于网络等原因无法获取到商品信息或获取为空,请在打开游戏商城界面时或下次支付之前增加判断再次获取
//如果始终无法获取到商品信息,请使用游戏内默认配置的商品信息展示支付,注意要和 SDK 管理台中配置的商品信息保持一致
FastSdk.queryGoodsInfo();

支払い(

java
//调用支付之前需要先进行基础事件的报送,比如创角,进服,升级等
PayParams payParams = new PayParams();
payParams.setItemId("item60");//商品ID,必传
payParams.setItemName("60钻石");//商品名称,必传
payParams.setAmount(100);//商品金额,必传,单位:分
payParams.setNotifyUrl("");//支付回调地址,非必传,如不设置可不写
//扩展信息,回调时原样返回,因为各渠道回调参数限制不一致。
//回调参数暂时只支持长度255。callBackInfo中不要使用这些符号:“|”、“=”、“+”、“/”。
payParams.setCallbackInfo("支付扩展信息,游戏透传参数");
payParams.setCurrency("USD");//币种通过商品信息接口查询获取,必传
FastSdk.pay(activity, payParams);

データレポート(

:::警告ノート(基本データは支払い前に報告する必要があります) Chuangjiao、サーバーエントリ、アップグレードおよびその他のイベントのデータを報告する場合、RoleID、Rolename、ServerID、およびServernameパラメーターは空ではなく、送信する必要があります。そうしないと、支払い機能に影響します! ! 其他必接数据请查看 :::

java
//eventType取值:
//创角: EventType.CreateRole
//进服: EventType.EnterServer
//升级: EventType.LevelUp
//前三种是必须上报,下面这种根据运营需求进行自定义事件上报
//自定义点:EventType.CustomerEvent,设置自定义点位后必须设置setExtendAction("game_init"),setPhylum("14")等

PlayerInfo playerInfo = new PlayerInfo();
playerInfo.setRoleId("32424");//角色唯一标识id,必传
playerInfo.setRoleName("昵称");//必传,String
playerInfo.setRoleLevel("6");//必传,注意字符串必须是数字,比如"123"
playerInfo.setZoneId("1");//必传,没有可传默认值"1",注意字符串中的值必须为数字
playerInfo.setZoneName("华东大区");//必传,没有可传默认值,比如"1区"等
playerInfo.setServerId("1");//必传,没有可传默认值"1",注意字符串中的值必须为数字
playerInfo.setServerName("区名称");//必传,没有可传默认值,比如"1区"等
playerInfo.setBalance("66");//必传,获取不到时传""
playerInfo.setVip("5");//必传
playerInfo.setPartyname("帮派名称");//非必传

//新增内容: extra必须携带数据,参考客户端数据报送特殊数据报送
//扩展信息,格式:key:value,key:value
playerInfo.setExtra("a:arm,b:bom,gameResourceUrl:xxx,gameLoginServerUrl:xxx");
playerInfo.setClassField("");//事件结果,可不填
//playerInfo.setPhylum("");//扩展数据报送时需要按照提供的事件编号填写,如:1
//playerInfo.setExtendAction("点位名称"); //基础打点不传,自定义打点传
FastSdk.report(EventType.EnterServer, PlayerInfo playerInfo);

::: 危険

  • CLSネットワーク検出機能にアクセスする必要がある学生は注意を払う必要があります! ! ! 点击查看规则详情
  • SDKが初期化された後、この機能をできるだけ早く送信してください。個別に送信するか、他のポイントで報告できます。
  • 検出アドレスはドメイン名またはIPにすることができます
  • フォーマットエラーを回避するために、検出アドレスのコロンを @に置き換えます
  • 検出アドレスには、次の3つのフィールドを使用する必要があります。Gameresourceurl、GameLoginserverurl、Gameserverurl :::

例:playerInfo.setextra( "key:value、gameresourceurl:http@xxx/open/init、gameserverurl:tcp@111.222.333.6@8888");

** eventType **

パラメーター名説明必須
eventType.createrole役割の作成はい
EventType.EnterServerサーバーへのゲームはい
eventType.Levelupロールアップグレードはい
eventType.CustomereVentカスタムはい

** playerInfo **

パラメーター名タイプ説明必須
roleid文字列RoleID IDはい
rolename文字列ロール名はい
Rolelevel文字列レベルはい
ZONEID文字列リージョンID、serverIDなしはい
ZoneName文字列地域名、servernameなしはい
ServerID文字列ServerIDはい
servername文字列サーバー名はい
バランス文字列バランスはい
VIP文字列VIPレベルはい
PartyName文字列ギルド名いいえ
Appversion文字列アプリケーションバージョン番号はい
AppResversion文字列ゲームリソースバージョン番号はい
拡張機能文字列イベント名はい
rolecreatetime文字列rolecreatetimeはい
文字列イベントID、「クライアントデータレポート」ドキュメントを参照してくださいはい
クラスフィールド文字列イベント結果、OK/失敗いいえ
余分な文字列拡張情報(注:このフィールドはCLSレポートポイントで使用されます)いいえ

カスタマーサービスコール(選択)

java
FastSdk.openService(activity);

システム共有とFacebook共有(オプションの接続)

java
ShareParams params = new ShareParams();
params.setTitle("标题");
params.setContent("内容");
params.setPicPath("picPath");//本地或网络图片链接
params.setShareUrl("http://xx.com");

//FACEBOOK
params.setBmp(bmp); 

FastSdk.share(ShareType.FACEBOOK, ShareType.ChildType.WX_CHAT, params);

ARK SDKレポートインターフェイス(選択)

ゲーム内の特定の特別なレベル、データなどの追加のゲームデータレポート。アクセスが不要な場合は、接続されていない場合があります。

java
String action = "game_xxx";
Map<String, Object> hashMap = new HashMap<>();
hashMap.put("xxx", 123);
hashMap.put("ooo", "321");
FastSdk.gameDataReport(action, hashMap);

appsflyer(オプション)

AppSflyerディープチェーン構成。他のAppSflyerレポート関数が統合されている場合、SDKはデフォルトで有効になるように関連する構成を自動的に導入します。

xml
<!--appsflyer 深度链接(选接,非必接),此处参数配置由运营直接在appsflyer后台查看获取,需添加到游戏入口启动类中-->
  <intent-filter  android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="https"android:host="xxxx-brand.onelink.me"android:pathPrefix="/xxx" />
  </intent-filter>
  <!--appsflyer 深度链接 end-->

Firebase(オプション)

Firebase依存関係ライブラリのみを追加する必要があり、機能はSDK側に自動的に統合され、直接使用できます

aihelp(select)

Aihelp依存関係ライブラリを追加するだけで、カスタマーサービスインターフェイスを介して呼び出すことができます

上記の依存関係ライブラリをインポートし、コールバックインターフェイスリスニングを追加します

java
//_TODO:Facebook DeepLink回调,该接口选接_
_//使用时必须在初始化之前配置,如需使用该功能需要先去Facebook后台填写游戏的启动Activity,且需要在游戏入口类配置scheme启动<intent-filter>_
//具体可参考https://developers.facebook.com/docs/applinks/add-to-content
FastSdk.hlDeepLinkListener = new HLDeepLinkListener() {
    @Override
    public void onDeepLinkSuccess(String jsonStr) {
        //返回内容可参考https://developers.facebook.com/docs/applinks/navigation-protocol?locale=zh_CN
    }
};

OpenInStall(选接

インターフェイス監視の依存関係をインポートします

xml
<meta-dataandroid:name="com.openinstall.APP_KEY"android:value="OPENINSTALL_APPKEY"/>

<!--AndroidManifest.xml 游戏主Activity-->
<activityandroid:name=".MainActivity"
    android:exported="true"
    android:launchMode="singleTask">
        <intent-filter>
            <action android:name="android.intent.action.VIEW"/>
            <category android:name="android.intent.category.DEFAULT"/>
            <category android:name="android.intent.category.BROWSABLE"/>
            <data android:scheme="OPENINSTALL_SCHEME"/>
        </intent-filter>
</activity>

::: 警告 意思OPENINSTALL_APPKEYアプリケーションに割り当てられたOpenInStallに交換しますappkey、意思OPENINSTALL_SCHEMEここで操作によって提供される実際のスキームパラメーターに置き換えます

ユーザーは、インストール後に共有して開きます。ログインした後、ユーザーはSDKで正常にコールバックをかけます。 userinfo。キーはgetMapに追加されます。 OpenInInstall_ChannelCodeおよびOpenInStall_AppData ここで、対応するロジックを処理するために関連するデータを取得できます :::

Firebase Crashlytics(选接

1。プロジェクトのルートディレクトリのbuild.gradle構成

xml
plugins {
    //Make sure that you have the AGP plugin 8.1+ dependency
    id 'com.android.application' version '8.1.4' apply false
    //...

    //Make sure that you have the Google services Gradle plugin 4.4.1+ dependency
    id 'com.google.gms.google-services' version '4.4.2' apply false

    //Add the dependency for the Crashlytics Gradle plugin
    id 'com.google.firebase.crashlytics' version '3.0.2' apply false
}

2。APPモジュールの下のbuild.gradle構成

xml
plugins {
        id 'com.android.application'
        //Make sure that you have the Google services Gradle plugin
        id 'com.google.gms.google-services'
        //Add the Crashlytics Gradle plugin
        id 'com.google.firebase.crashlytics'
}

//引入依赖库
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    ...
    implementation 'com.hoolai.oversea.crash:crashlytics:1.0.0.0'
}

3.他の追加機能構成を追加する必要がある場合は、すでにデモの例があります。アクセスするデモを参照してください。官方文档

CatAppultの支払い

プロジェクトのルートディレクトリのbuild.gradle構成は、次の依存関係実装 'com.hoolai.oversea:hl-oversea-global:1.0.5.0'に置き換えられます。

xml

//引入依赖库
dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    //如需接入catappult支付渠道请引用下面这个依赖,注意与com.hoolai.oversea:hl-oversea-global:${version}两个依赖同时只能引入一个
    implementation 'com.hoolai.oversea:hl-oversea-global-catappult:1.0.5.1'
    //access-native 1.0.2.1426版本及以上版本
    implementation 'com.hoolai.access.platform:access-native:0.1.2.1426'
}

Q&A

初期化に失敗し、「非認証アプリケーション」プロンプトが表示されます。それに対処する方法は?

署名ファイルが正しくありません。署名ファイルがない場合は、オペレーションクラスメートに連絡できます。

アカウントの秘密でログインするときはアカウントを持っていませんか?

アカウントのパスワードログインメソッドには登録機能がなく、操作クラスメートはアカウント/パスワードを提供する必要があります。

サンドボックス環境の支払いをテストする方法は?

オペレーションクラスメートで確認して、サンドボックス環境がオンになり、アカウントがテストホワイトリストに追加されたことを確認してください。

支払いができませんか?

ゲームに入るときに作成者またはサーバーエントリのイベントが報告されるかどうかを確認してください。

支払いに成功することはできませんか?

1.提供された支払いコールバックURLが正しいかどうかを確認します。

2。setnotifyurl(url)が支払いパラメーターで呼び出されているかどうか、およびそれが呼び出された場合、このURLが最初に呼び出されるかどうかを確認します。

フローティングボールは、チャンネルパッケージでゲームからログアウトするときに隠されていません

fastsdk.logout()はゲームで呼び出されません。ゲーム「設定」インターフェイスは、「Switch Server」と「Switchアカウント」の2つのボタンを作成し、「Switchアカウント」を実行するときにログアウトを呼び出すことをお勧めします。

Hoolai Access SDK