Android SDK 集成文档

集成前必读:

由于微信小程序和APP交互的限制,APP调起小程序要求APP必须在微信开放平台已经认证,如果没有认证无法调起微信小程序,集成前请先前往微信开放平台进行认证。如果已经集成过微信登录、微信支付或者微信的分享则可以直接使用。

一、集成 SDK

方式一:Maven集成

implementation 'com.jijiancode:jjcode-sdk-android:1.4.0'

方式二:手动集成

  1. SDK 依赖于 微信SDK,如果之前未集成过微信SDK,需引入微信SDK, 可参考微信官方接入文档

  2. 前往下载最新版的Android SDK。前往下载

    将 jijiancodesdk-android-xxx.aar 文件复制到app module目录下的libs文件夹中, 然后打开app module目录下的build.gradle配置文件,在android一栏中添加依赖:

     repositories {
         flatDir {
             dirs 'libs'
         }
     }
    

    然后再在dependencies一栏中添加:

     implementation(name: 'jijiancodesdk-android-[最新SDK版本号].aar', ext: 'aar')
    

二、配置 APP_ID 和 微信 APP_ID

在 AndroidManifest.xml 文件中的 application 标签内设置 appId

<meta-data
    android:name="com.jijiancode.APP_ID"
    android:value="JIJIANCODE_APP_ID"/>

<meta-data
    android:name="com.jijiancode.WX_APP_ID"
    android:value="WX_APP_ID"/>

请将 JIJIANCODE_APP_ID 替换成 JiJianCode 为应用分配的 AppId , 请将WX_APP_ID 替换成 微信分配的 AppId

三、初始化

在自定义的ApplicationonCreate()中初始化 JiJianCode。 如果没有自定义Application可以参考下面示例代码自定义Application

示例代码

Application中调用初始化代码。

public class MyApp extends Application {
    ...
    @Override
    public void onCreate() {
        super.onCreate();
        JJCode.init(this);
    }
    ...
}

注意: 请您确保在主进程中调用 init() 方法,否则可能会导致错误

AndroidManifest.xml中的application标签中添加android:name=".MyApp" 指定自定义的Application类。

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:name=".MyApp"
    android:theme="@style/AppTheme">
    ...
</application>

四、配置 WXEntryActivity

微信小程序打开App会回调 WXEntryActivityonResp 方法。WXEntryActivity 需要按照要求放在 {$applicationId}.wxapi 的包下,如果你的AndroidManifest.xml 中指定的 packageapplicationId 不同,要放在applicationId 的包名下,否则不能正常回调。

1. 已存在 WXEntryActivity

如果已经存在 WXEntryActivity,请在onResp(BaseResp baseResp) 中调用 JJCode.handleWXResp(baseResp) 用于处理微信的回调。

@Override
    public void onResp(BaseResp resp) {
        if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
            WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;
            String extraData = launchMiniProResp.extMsg;
            if (JJCode.handleWXResp(extraData)) {
                finish();
            }
        }
        // ...原来的业务逻辑
    }

2. 不存在 WXEntryActivity

方案一:快速集成

在主工程的 AndroidManifest.xml 中的 application 标签下加入下面的代码:

<activity-alias
            android:name="${applicationId}.wxapi.WXEntryActivity"
            android:exported="true"
            android:launchMode="singleTop"
            android:targetActivity="cn.net.shoot.jijiancodesdk.wxapi.JJCodeWXEntryActivity"
            android:taskAffinity="${applicationId}"
            android:theme="@style/JJCodeDisablePreviewTheme">
            <intent-filter>
                <action android:name="android.intent.action.VIEW" />
                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity-alias>
方案二:手动集成

新建WXEntryActivity 放在 {$applicationId}.wxapi 的包下,内容如下:

public class WXEntryActivity extends AppCompatActivity implements IWXAPIEventHandler {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        IWXAPI api = WXAPIFactory.createWXAPI(this,
                WX_APP_ID,true);
        // 将应用的appId注册到微信
        api.registerApp(WX_APP_ID);
        api.handleIntent(getIntent(), this);
    }

    @Override
    public void onReq(BaseReq baseReq) {

    }

    @Override
    public void onResp(BaseResp resp) {
        if (resp.getType() == ConstantsAPI.COMMAND_LAUNCH_WX_MINIPROGRAM) {
            WXLaunchMiniProgram.Resp launchMiniProResp = (WXLaunchMiniProgram.Resp) resp;
            String extraData = launchMiniProResp.extMsg;
            if (JJCode.handleWXResp(extraData)) {
                finish();
            }
        }
    }


}

请将代码中的 WX_APP_ID 替换成 微信为你的应用分配的 APP_ID.

同时,在AndroidManifest.xml中为WXEntryActivity指定一个透明的样式。

<activity android:name=".WXEntryActivity"
            android:exported="true"
            android:taskAffinity="PACKAGE_NAME"
            android:launchMode="singleTask"
            android:theme="@style/wxEntry"/>

请将代码中的 PACKAGE_NAME 替换为你的自己包名

其中的 wxEntry的样式大致如下,可以根据自己的样式需要进行修改。

 <style name="wxEntry" parent="Theme.AppCompat.NoActionBar">
        <!-- 边框 -->
        <item name="android:windowFrame">@android:color/transparent</item>
        <!-- 是否浮现在activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 半透明 -->
        <item name="android:windowIsTranslucent">true</item>
        <!-- 无标题 -->
        <item name="android:windowNoTitle">true</item>
        <!-- 背景透明 -->
        <item name="android:windowBackground">@android:color/transparent</item>
    </style>

五、启动验证流程

在需要对手机号验证时,调用JJCode.verify启动验证,在启动验证之前,建议根据业务逻辑先对手机号的合法性进行校验。

 JJCode.verify(activity, phone, new VerifyCallback() {
            @Override
            public void onSuccess(String mobile, String token) {
                Log.e("JJCode", "验证成功,mobile:" + mobile + ",token:" + token);
                Toast.makeText(MainActivity.this, "验证成功", Toast.LENGTH_LONG).show();
            }

            @Override
            public void onFailure(int code, String msg) {
                Log.e("JJCode", "验证失败,err code:" + code + ",err msg:" + msg );
                Toast.makeText(MainActivity.this, "验证失败:" + msg, Toast.LENGTH_LONG).show();
            }
        });

六、提交后端进行校验

由于客户端不是完全可信的环境,在第五步验证成功后,在注册或者登录提交数据时,需要将验证返回的mobiletoken全部提交到后端,由后端调用我们提供的API校验是否手机号已真实的校验通过。

七、控制台配置包名和签名信息

为了防止APP_ID被非法冒用引起不必要的麻烦,强烈建议在我们控制台配置应用包名和签名信息,签名可以配置多个,以逗号分割。配置后包名或者签名信息不同均不能使用。

Android配置

results matching ""

    No results matching ""