Skip to content

Integração do Android

Integração do código de amostra

O código de amostra de integração está disponível aqui https://github.com/finogeeks/mop-android-demo Se você não tem acesso ao github em seu ambiente, você também pode visitar o repositório espelho no gitee clicando aqui.

1. Obter credenciais de miniaplicaivos

Após criar o aplicativo e adicionar o Bundle ID, se precisar exportar a chave SDK correspondente e o SDK Key. Por favor, selecione "Copiar" após o Bundle ID correspondente. Você pode colar usando Ctrl+V ou Command+V;

1.1 Criando aplicativos

Usuários registrados precisam fazer login em 'Gerenciamento de Aplicativos - Novo Aplicativo Parceiro' para concluir a criação do aplicativo;

Image.png

1.2 Obtendo a chave SDK e o SDK Secret

Após criar o aplicativo e adicionar o Bundle ID correspondente, se precisar exportar a chave SDK e o segredo SDK correspondentes, selecione Copiar ao lado do Bundle ID correspondente. Você pode colar usando Ctrl+V ou Command+V;

Image.png Inscreva-se no DeepL Pro para editar este documento. Visite www.DeepL.com/profor mais informações. Dos quais:

  • Chave SDK: Esta é a credencial para o aplicativo parceiro usar o SDK do applet. Se a chave do SDK falhar, todas as APIs do SDK não estarão disponíveis
  • SDK SECERT: é o certificado de segurança para acessar o serviço, não passe para terceiros.

de Dica

Para obter detalhes sobre como criar aplicativos e obter o SDK KEY e o SDK SECRET, consulte a seção 「Introdução-Diretrizes de Operação-Diretrizes Empresariais-7」 seção.

2.Importando o SDK

2.1 O que configurar no projeto Build.gradle

Adicione o endereço do repositório maven ao build.gradle do projeto em

groovy
maven {
 url  "https://gradle.finogeeks.club/repository/applet/" 
 credentials {
 username  "applet" 
 password  "123321" 
 }
}

Como parte do código no SDK é escrito em Kotlin, é necessário adicionar o plugin gradle para Kotlin ao build.gradle do projeto.

groovy
classpath  "org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.61"

A configuração completa do build.gradle do projeto é a seguinte:

groovy
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  "https://gradle.finogeeks.club/repository/applet/" 
 credentials {
 username  "applet" 
 password  "123321" 
 }
 }
 }
}

task clean(type: Delete) {
 delete rootProject.buildDir
}

2.2 Dependências do SDK em Gradle

Adicione uma dependência de finapplet no dependencies do gradle
arquivo.

groovy
implementation 'com.finogeeks.lib:finapplet:x.y.z' //x.y.z must be 
replaced with the specific version number

Nota

O Libraísmo Dinâmico no SDK é dinâmico hardnet.hardned As bibliotecas não podem ser compactadas ao compilar e embalar, caso contrário Um erro será reformado ao carregar.

Então você precisa adicionar um doNotStrip configuração para build.gradle SOB O módulo de aplicativo.

groovy
packagingOptions {
 // libsdkcore.so, libfin-yuvutil.so are hardened and cannot be compressed, otherwise an error will be reported when loading dynamic libraries
 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" 
}

A configuração completa é a seguinte.

groovy
apply plugin: 'com.android.application'

android {
 buildToolsVersion '28.0.3'
 compileSdkVersion 28
 defaultConfig {
 applicationId  "com.finogeeks.finappletdemo" 
 minSdkVersion 19
 targetSdkVersion 28
 versionCode 1
 versionName  "1.0" 
 }
 buildTypes {
 release {
 minifyEnabled true
 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
 }
 }
 packagingOptions {
 // libsdkcore.so, libyuvutil.so are hardened and cannot be compressed, otherwise it will report an error when loading dynamic libraries
 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/libyuvutil.so" 
 doNotStrip  "*/x86_64/libyuvutil.so" 
 doNotStrip  "*/armeabi/libyuvutil.so" 
 doNotStrip  "*/armeabi-v7a/libyuvutil.so" 
 doNotStrip  "*/arm64-v8a/libyuvutil.so" 
 }
}

dependencies {
 implementation fileTree(include: ['*.jar'], dir: 'libs')
 implementation 'com.finogeeks.lib:finapplet:x.y.z' //x.y.z must be replaced with the specific version number
}

2.3 Configurando as regras de ofuscação

Depois de integrar o SDK, a seguinte configuração precisa ser Adicionado ao arquivo de configuração de regras de ofuscação do projeto para Evite a offusão de partes do SDK que não podem ser ofuscadas.

groovy
-keep class com.finogeeks.** {*;}

3.SDK Inicialização

Recomendamos fortemente que o SDK seja inicialista em Application .O Os parâmetros a serem transmitidos para inicializar o SDK são os seguintes (SDK A inicialização deve ser chamada apenas uma vez e chamadas repetidas devem ser evitado).

3.1 Informações de configuração para a estrutura do applet

Antes do verso 2.13.102 , O SDK só suporta a configuração de uma mensagem de servidor e só podia abrir applets em um único Ambiente. Os parâmetros de configuração que seguem.

java
FinAppConfig config = new FinAppConfig.Builder()
 .setSdkKey( "SDK Key information" ) // SDK Key
 .setSdkSecret( "SDK Secret information" ) // SDK Secret
 .setApiUrl( "server address" ) // server address
 .setApiPrefix( "/api/v1/mop/" ) // Server interface request routing prefix
 .setEncryptionType( "encryptionType" ) // encryptionType, national:SM, md5: MD5 (recommended)
 .build();

Da versão 2.13.102 Em diante é público configurar múltiplos Informações do servidor para abrir applets em diferentes ambientes no O mesmo horário. Os parâmetros de configuração são os seguintes.

java
// Collection of server information
List< FinStoreConfig> storeConfigs = new ArrayList<>();
// Information on Server 1
FinStoreConfig storeConfig1 = new FinStoreConfig(
  "SDK Key Information" , // SDK Key
  "SDK Secret information" , // SDK Secret
  "Address of server 1" , // Server address
  "Server 1's data upload server address" , // the address of the data upload server
  "/api/v1/mop/" , // Server interface request routing prefix
  "" ,
  "encryption method"  // encryption method, cc:SM, md5: MD5 (recommended)
);
storeConfigs.add(storeConfig1);
// Information on Server 2
FinStoreConfig storeConfig2 = new FinStoreConfig(
  "SDK Key Information" , // SDK Key
  "SDK Secret information" , // SDK Secret
  "Address of server 2" , // Server address
  "Server 2's data upload server address" , // the address of the data upload server
  "/api/v1/mop/" , // Server interface request routing prefix
  "" ,
  "encryption method"  // encryption method, cc:SM, md5: MD5 (recommended)
);
storeConfigs.add(storeConfig2);
FinAppConfig config = new FinAppConfig.Builder()
 .setFinStoreConfigs(storeConfigs) // A collection of server information
 .build();

3.2 Definindo o retorno de chamada do status de inicialização do SDK

Implementação da interface FiCallback para ouvir o Estado de inicialização do SDK.

java
// SDK initialization result callback for receiving SDK initialization status
FinCallback< Object> callback = new FinCallback< Object>() {
 @Override
 public void onSuccess(Object result) {
 // SDK initialisation successful
 }
 @Override
 public void onError(int code, String error) {
 // SDK initialization failed
 Toast.makeText(AppletApplication.this,  "SDK initialization failed" , Toast.LENGTH_SHORT).show();
 }
 @Override
 public void onProgress(int status, String error) {
 }
};

3.3 Inicializando o SDK

Inicialmente, o SDK chamando a interface inicializada.

java
FinAppClient.INSTANCE.init(this, config, callback);

3.4 Inicialização do SDK para Multi-Processamento de processos

O SDK é implementado usando um multi-Mecanismo de processo onde cada O applet é executado em um processo de seção, ou seja, um applet corresponde a um Processo. Ao inicializar o SDK, um ponto a ser observado em particular Que o processo de applet não observa executar nenhuma inicialização Operações quando é criado, evento se o applet sdk for inicializado, Não precisa ser executado no processo de applet. Por exemplo, se o aplicativo usa algum terceiro-Bibliotecas de festas isso Precisa ser inicializado quando o aplicativo é iniciado, então quando o A inicialização é realizada em Application , Apenas o processo atual Precisa inicializar o terceiro-Bibliotecas de festas se for o host Processo, o processo de applet não precisa inicializar Bibliotecas. Antes de inicializar o SDK, certifique -se de determinar qual Processar o processo atual é e, se for um processo de applet, não Execute quaisquer operações :.

java
if (FinAppClient.INSTANCE.isFinAppProcess(this)) {
 return;
}

O exposto acima é o e todo o processo de inicializar o SDK. O código é o seguinte.

java
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;

/**
 * Application of {@link android.app.}
 */
public class AppletApplication extends MultiDexApplication {
 
 @Override
 public void onCreate() {
 super.onCreate();
 if (FinAppClient.INSTANCE.isFinAppProcess(this)) {
 // The applet process does not perform any initialization operations
 return;
 }
 
 // Collection of server information
 List< FinStoreConfig> storeConfigs = new ArrayList<>();
 // Information on Server 1
 FinStoreConfig storeConfig1 = new FinStoreConfig(
  "SDK Key Information" , // SDK Key
  "SDK Secret information" , // SDK Secret
  "Address of server 1" , // Server address
  "Server 1's data upload server address" , // the address of the data upload server
  "/api/v1/mop/" , // Server interface request routing prefix
  "" ,
  "encryption method"  // encryption method, cc:SM, md5: MD5 (recommended)
 );
 storeConfigs.add(storeConfig1);
 // Information on Server 2
 FinStoreConfig storeConfig2 = new FinStoreConfig(
  "SDK Key Information" , // SDK Key
  "SDK Secret information" , // SDK Secret
  "Address of server 2" , // Server address
  "Server 2's data upload server address" , // the address of the data upload server
  "/api/v1/mop/" , // Server interface request routing prefix
  "" ,
  "encryption method"  // encryption method, cc:SM, md5: MD5 (recommended)
 );
 storeConfigs.add(storeConfig2);
 FinAppConfig config = new FinAppConfig.Builder()
 .setFinStoreConfigs(storeConfigs) // A collection of server information
 .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 initialization failed" , Toast.LENGTH_SHORT).show();
 }
 @Override
 public void onProgress(int status, String error) {
 }
 });
 }
}

4. Exemplos de uso do SDK

4.1 Lançando o applet

Quando o applet estiver na plataforma, podemos abrir o applet por chamando a interface para iniciar o applet no sdk.O código para Iniciar o applet é o seguinte.

java
FinAppClient.INSTANCE.getAppletApiManager().startApplet(this,  "5e0dc1f574193e00010d73c1" );

Se o applet precisar ser lançado com o início-parâmetros up, um interface que suporta o início do início-parâmetros up podem ser chamados, como, como segue.

java
Map< String, String> params = new HashMap<>();
// path is the path to the applet page
params.put( "path" ,  "/pages/index/index" );
// query is the start parameter, with the content 
 "key1=value1&key2=value2 ..."  in the form of
params.put( "query" ,  "aaa=test&bbb=123" );
FinAppClient.INSTANCE.getAppletApiManager().startApplet(this, 
 "5e0dc1f574193e00010d73c1" , params);

4.2 Personalizando a interface do applet

A implementação de uma interface personalizada de applet requer a criação de uma classe que Herda de AbsApi e substituindo o método da tinta (a maioria notebly o apis() Método e o invoke() Método) no criado subclasse. A seguir é um exato de como implementar e registrar um applet Interface de customização abrindo uma página nativa dentro do applet.

  1. Primeiro, crie o ApiOpenPage classe, herança de AbsApi Então então
  2. então, o apis() O método é substituído em ApiOpenPage Para retornar Os nomes de todas as APIs que podem ser chamadas. Podemos adicionar vários API nomes para a matriz retonada por apis() , O exemplo atual adiciona apenas um openPage Então então 3.Finalmente, o It invoke() O método é substituído em ApiOpenPage para Implementar a lógica correspondente. Pular de página simples, ou seja, se o openPage A interface é chamada no Applet, então uma atividade será iniciada no tamanho nativo.
java
package com.example.finogeeks.appletdemo.api;

import android.content.Context;
import android.content.Intent;
import android.text.TextUtils;

import com.example.finogeeks.appletdemo.SecondActivity;
import com.finogeeks.lib.applet.api.AbsApi;
import com.finogeeks.lib.applet.interfaces.ICallback;

import org.json.JSONObject;

/**
 * Custom applet interface for simple page jumps
 */
public class ApiOpenPage extends AbsApi {

 private Context mContext;

 public ApiOpenPage(Context context) {
 mContext = context;
 }

 /**
 * Returns an array of callable api names
 *
 * @return an array of callable api names
 */
 @Override
 public String[] apis() {
 return new String[]{ "openPage" };
 }
 /**
 * This method is triggered when the corresponding API call is received, and the business logic of the API is implemented in this method
 *
 * @param event event name, i.e.API name
 * @param param event parameter
 * @param callback Callback interface, used to call back the result 
to the applet after executing the business logic
 */
 @Override
 public void invoke(String event, JSONObject param, ICallback 
callback) {
 if ( "openPage" .equals(event)) {
 String url = param.optString( "url" );
 if (! TextUtils.isEmpty(url)) {
 Intent intent = new Intent();
 intent.setClass(mContext, SecondActivity.class);
 mContext.startActivity(intent);
 callback.onSuccess(null);
 } else {
 callback.onFail();
 }
 }
 }
}

Depois de implementar a interface de applet personalizada, mais duas etapas ** são Exigido antes que a interface possa ser chamada no applet. 1.Randistem a interface de applet personalizada para o sdk.interface O registro é alcançado chamando o registerApi Método do IExtensionApiManager interface.

java
FinAppClient.INSTANCE.getExtensionApiManager().registerApi(new 
ApiOpenPage(context));

2.Ada uma configuração de interface personalizada para o Applet Project.crete um PhizClipConf.js Arquivo no diretório raiz do projeto de applet e configurar a interface personalizada correspondente em PhizClipConf.js com A seguinte configuração.

java
module.exports = {
 extApi:[
 {
 name: 'openPage', // extension interface name
 params: { // extend the interface parameters, you can list only the required parameters
 url: ''
 }
 }
 ]
}

4.3 Interagindo entre as páginas nativas e de applet

Quando o applet carrega uma página da web, se a página da web é ligar para o nativo Funcionalidade, o código nativo precisa ser registrado dentro do SDK em a forma de uma interface JSSDK personalizada. A interface JSSDK personalizada é Implementado da maneira ditada como interface de applet personalizada, ou seja, Herda de AbsApi e substitui o método da classe de tinta. A diferença é que o registerApi Método do IExtensionWebApiManager É chamado quando a interface é registrada, Em vez do método no IExtensionApiManager Então então

java
FinAppClient.INSTANCE.getExtensionWebApiManager().registerApi(new 
WebApi(context));

O SDK também suporta chamadas nativas para o JavaScript código na web pague da seguinte maneira.

java
FinAppClient.INSTANCE.getAppletApiManager().callJS( "appId" , 
 "funcName" ,  "funParams" , 1)
 .subscribeOn(Schedulers.io())
 .observeOn(AndroidSchedulers.mainThread())
 .subscribe(
 result -> Toast.makeText(context, "callJS 
successfully : " + result, Toast.LENGTH_SHORT).show(),
 throwable -> Toast.makeText(context, "callJS failed : 
" + throwable.getLocalizedMessage(), Toast.LENGTH_SHORT).show()
 );

5. SDK estendido

O exposto acima está de volta ao redor do sdk central finapplet . Em rosto, em Além do sdk central, também fornecemos um sdk de extensão, o branco é um Biblioteca que Relical no Core SDK e processe várias APIs de applet que não estão disponíveis no Core SDK. O motivo para provar um sdk de extensão é garantir que o núcleo SDK é leve o suficiente e a API de applet já está certa. O principal sdk é Responsável por configurar a estrutura básica para executar o aplicativo e Fornecendo um pequeno número das APIs mais inacessíveis, mantendo Somente permissões básicas, como armazenamento, câmera, geologia, etc. e Tem apenas um pouco mais de 1 MB de tamanho.

Obtenha o SDK estendido

Você pode baixar o arquivo Android SDK no [download de recursos Centro] (https://www.phizclip.com/downloads/) .O SDK estendido também é Incluído no arquivo zip de download.

Se você quiser usar a API no sdk de extensão, poderá confiar no Biblioteca SDK de extensão em Gradle em

groovy
implementation 'com.finogeeks.mop:plugins:x.y.z' //x.y.z must be replaced with the specific version number

6. MAPSDK

O MAPSDK suporta o componente do mapa e o local. Ele roths no núcleo SDK como um complemento para o Map e Location
Funções. Os recursos de mapa e localização fornecidos dependem de um terceiro-Mapa da festa E SDK local, que suporta o uso de três complementos deGode Map|Gode Location ,,Baidu Map|Baidu Location e Google Map|Google LocationEntão então

Nota

Por favor, veja "Development-API-Location" para O suporte local da API das soluções Gaode, Baidu e Google.

6.1 Integração

  1. Dependência na Biblioteca Mapsdk em Gradle.
groovy
implementation 'com.finogeeks.mop:map:x.y.z' //x.y.z must be replaced with the specific version number
  1. Desde o mapa e a capacidade de localização implementada por MapsDK depende no terceiro-Mapa da festa e local Para integrar o terceiro-Mapa da festa e local Registro de serviço, etc.

Nota

Selecione um dos seguintes fornecedores de SDK de terceiros para Incten SDKs da festa, por favor, consulte o escritório, documentação.

Confiança nas bibliotecas SDK de terceiros: (selecione um)

groovy
//Gaudet
implementation 'com.amap.api:3dmap:8.0.0' // you can replace it with the version number you need
implementation 'com.amap.api:location:5.5.1' // you can replace it with the version number you need
implementation 'com.amap.api:search:7.9.0' // you can replace it with the version number you need
groovy
// Baidu
implementation 'com.baidu.lbsyun:BaiduMapSDK_Map:7.4.0' // you can replace it with the version number you need
implementation 'com.baidu.lbsyun:BaiduMapSDK_Location:9.1.8' // you can replace it with the version number you need
implementation 'com.baidu.lbsyun:BaiduMapSDK_Search:7.4.0' // you can replace it with the version number you need
groovy
/Google
implementation 'com.google.android.gms:play-services-maps:16.1.0' // 
this version is recommended and can be replaced with the version number 
you need, but it is not supported above this version
implementation 'com.google.android.gms:play-services-location:16.0.0' 
// this version is recommended and can be replaced with the version number you need, but it is not supported above this version

Registre a API_KEY e o serviço do SDK de terceiros em AndroidManifest.xml : (Escolha um, dependendo do terceiro sdk você depende de)

xml
//Gaudet
< meta-data
 android:name= "com.amap.api.v2.apikey" 
 android:value= "The ApiKey you requested"  />
< service android:name= "com.amap.api.location.APSService"  />
xml
// Baidu
< meta-data
 android:name= "com.baidu.lbsapi.API_KEY" 
 android:value= "The ApiKey you requested"  />
< service
 android:name= "com.baidu.location.f" 
 android:enabled= "true" 
 android:process= ":remote"  />
xml
/Google
< meta-data
 android:name= "com.google.android.geo.API_KEY" 
 android:value= "The ApiKey you requested"  />

Configure a arquitetura SOL da biblioteca suportada pelo terceiro SDK em build.gradle Então então

groovy
android {
 defaultConfig {
 ndk {
 //Set the supported SO library architecture (you can select one or more platforms of so as required)
 abiFilters  "armeabi" ,  "armeabi-v7a" ,  "arm64-v8a" ,  "x86" , 
 "x86_64" 
 }
 }
}

7. Bluetooth SDK

O uso da interface Bluetooth requer uma integração de seções do Bluetooth SDK, Onece Integrated the Interface entrará em vigor e não É necessária configuração. Método de integração.

implementation 'com.finogeeks.mop:bluetooth:x.y.z'

8.SoundNet SDK

O usuário das interfaces relacionadas à Net Requer uma seção Integração do SoundNet SDK, que entrará em vigor assim que o Interfaces são integradas e nenhuma configuração é necessária. Método de integração.

groovy
implementation 'com.finogeeks.mop:agora:x.y.z'

Se você usar a importação de AAR para aceitar o SDK, você precisará Adicione uma dependência adicional da rede sonora.

groovy
implementation 'io.agora.rtc:full-sdk:3.5.0'

9.Webrtcsdk

Usando webrtc-Interfaces relacionadas requer uma seção webrtcsdk Integração, que entra em vigor uma quando a interface é integrada e Não requer configuração. Método de integração.

groovy
implementation 'com.finogeeks.mop:webrtc:x.y.z'

Se você estiver usando a imagem AAR para aceitar, você precisará Para adicionar dependências WebRTC adicionais.

groovy
implementation 'org.webrtc:google-webrtc:1.0.32006'

10. Contacte o SDK

O uso do controle-Interfaces relacionadas requer uma integração de seção do SDK de controle, que entra em vigor assim que a interface é integrada E não requer configuração. Método de integração.

groovy
implementation 'com.finogeeks.mop:contact:x.y.z'

11.Clipboard SDK

Usando a área de transferência-Interfaces relacionadas requer uma integração de seção do sdk da área de transferência, o branco entra em vigor assim que a interface estiver Integrado e não requer configuração. Método de integração.

groovy
implementation 'com.finogeeks.mop:clipboard:x.y.z'

12.PhizSDK

Aceita rápida para o Phiz SDK fornece a capacidade de ligar para o Phiz Para obter login, informações do usuário, número de telefone celular e pagamento via Appleto Phiz. Método de integração.

groovy
implementation 'com.finogeeks.mop:wechat:x.y.z'

e adicione o ID do aplicativo Phiz que você solicitou na plataforma aberta do Phiz para o build.gradle Arquivo do seu projeto (por exemplo app/build.gradle ) NO

groovy
android {
 // ...Other configurations omitted
 defaultConfig {
 // ...Other configurations omitted
 resValue  "string" ,  "phiz_sdk_app_id" ,  "Your Phiz SDKAPPID" 
 }
}

Nota

Para usar o Phizsdk, você deve desviar que a versão sdk central seja 2.37.13 Ou acima.

Nota

Como o Phizsdk precisa substituir o open-type Métodos relacionados em o IAppletHandler , Especificamente chooseAvatar ,, contact ,, feedback ,, getPhoneNumber ,, launchApp ,, shareAppMessage Então então Então, se você implementou IAppletHandler e implementaram o Acima de seis métodos, Phizsdk assumirá o controle getPhoneNumber e a Os cinco métodos restantes serão migrados da seguinte forma, se você não tiver Implementd IAppletHandler ou não use o método de cerca de seis, você Pode ignorar isso. 1.Implem o IWeChatOpenTypeHandler interface.

Kotlin
  class MyWeChatAppletOpenTypeHandler : IWeChatOpenTypeHandler {
 override fun chooseAvatar(callback: 
IAppletHandler.IAppletCallback) {
 // The logic of your implementation
 }
 
 override fun contact(json: JSONObject): Boolean {
 // The logic of your implementation
 }
 
 override fun feedback(bundle: Bundle): Boolean {
 // The logic of your implementation
 }
 
 override fun launchApp(appParameter: String?): Boolean {
 // The logic of your implementation
 }
 
 override fun shareAppMessage(
 appInfo: String,
 bitmap: Bitmap?
 callback: IAppletHandler.
 ) {
 // The logic of your implementation
 }
 }

2.After the core SDK has been successfully initialised, set up your implementation class.(Note that, as with the core SDK, it is important to ensure that it is set up in the main process).

Kotlin
 WechatopentypeClient.instance.iwechatopeEntypeHandler =
MywechatappleToPEntypeHandler ()