【AGC】HarmonyOS鸿蒙Next中使用付费下载退出应用时崩溃问题

问题背景:

【AGC】HarmonyOS鸿蒙Next付费下载有两种实现方式,一种是不集成DRM Service SDK的方式,在应用发布时勾选“付费选项”,但会容易导致该应用可以被其他用户传播、安装,获取到该应用的其他用户无需付费即可使用。另一种是集成DRM Service SDK,用户启动应用时AppGallery DRM Service SDK会强制校验用户是否购买该应用,如未购买则会提示用户购买。所以推荐选择第二种集成SDK的方式,但是在集成开发过程中,有开发者遇到了集成付费下载后,未付费用户鉴权失败后出现崩溃的情况,未能正常退出应用。

问题分析:

在日志中发现开发者在创建DrmCheckCallback实例,来接收鉴权结果的代码中出现了崩溃,鉴权接口回调方法代码如下:

private class MyDrmCheckCallback implements DrmCheckCallback {
    @Override
    public void onCheckSuccess() {
        // 鉴权成功,用户继续使用程序。
        // setContentView(R.layout.activity_main);
    }
    @Override
    public void onCheckFailed() {
        // 鉴权失败,用户不能使用程序,程序退出。
        new AlertDialog.Builder(null)
            .setIcon(R.drawable.ic_launcher)
            .setTitle("鉴权失败,请支付后使用。程序即将退出!")
            .setPositiveButton("OK", new DialogInterface.OnClickListener(){
                public void onClick(DialogInterface dialog,int whichButton){
                    onDestroy();
                }
            })
            .create();
        finish();
    }
}

解决方案:

在查看这段代码时发现了问题,他在onClick()中调用了onDestroy(),又在onCheckFailed()中调用了finish(),这个使用方法比较怪异,一般来说,我们在鉴权失败时直接调用finish()方法就可以了。所以给出代码修改建议如下:

private class MyDrmCheckCallback implements DrmCheckCallback {
    private static final String TAG = "MyDrmCheckCallback";
    @Override
    public void onCheckSuccess() {
        // 鉴权成功,用户继续使用程序。
        // setContentView(R.layout.activity_content);
        Log.i(TAG,"onCheckSuccess");
        AlertDialog dlg = new AlertDialog.Builder(MainActivity.this)
            .setIcon(R.drawable.ic_launcher)
            .setTitle("测试鉴权失败,请支付后使用。程序即将退出!")
            .setPositiveButton("OK", new DialogInterface.OnClickListener(){
                public void onClick(DialogInterface dialog,int whichButton){
                    finish();
                }
            })   
            .create();   
        dlg.show();
    }
}

在开发者使用了这个鉴权回调方法之后,就不会出现崩溃的情况了。

参考链接:https://developer.huawei.com/consumer/cn/doc/development/AppGallery-connect-Guides/appgallerykit-paidapps-devguide-0000001073913394


更多关于【AGC】HarmonyOS鸿蒙Next中使用付费下载退出应用时崩溃问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

学习

更多关于【AGC】HarmonyOS鸿蒙Next中使用付费下载退出应用时崩溃问题的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,付费下载退出应用时崩溃问题可能由以下原因引起:

  1. 资源未释放:确保在退出应用时,所有网络连接、文件句柄等资源都已正确释放。
  2. 异步操作未完成:检查是否有未完成的异步下载任务,确保在退出前所有任务都已处理完毕。
  3. 内存泄漏:使用工具检测内存泄漏,确保没有未释放的对象导致内存溢出。
  4. 异常处理:在关键代码段添加异常捕获,记录崩溃日志以便分析。

建议使用DevEco Studio的调试工具进行详细分析,定位具体崩溃点并进行修复。

回到顶部