OPPO开放平台 应用评论调起能力接入指南

接入OPPO软件商店的评论功能后,可以直接在本应用当前页面调起评论窗口,进行评分和评论,无须跳转至软件商店内。

OPPO开放平台 应用评论调起能力接入指南

接入场景说明

接入OPPO软件商店的评论功能后,可以直接在本应用当前页面调起评论窗口,进行评分和评论,无须跳转至软件商店内。

效果示例:
效果示例图1.jpg

功能优势

1、评分和评论会影响您的App在软件商店的排名,优质的评论以及较高的评分,有助于提升App在应用商店的排名。
2、优质的评论以及较高的评分,有助于激发用户下载的欲望,能有效提高自然下载量。
3、一键调起商店评论页面,降低用户评论成本,帮助您更方便高效地收集用户评论

跳转协议

oaps://mk/developer/comment?pkg={callerPkg}
参数说明:
pkg:要拉起评论的应用的包名,必须和调用商店的应用是同一个包名,否则无法拉起商店评论。
示例(游戏中心拉起其在商店的评论页的协议链接):
oaps://mk/developer/comment?pkg=com.nearme.gamecente

支持评论的商店版本

软件商店的版本号(versionCode) >= 84000。

详细使用方法

Android R(11) 应用包信息可见性适配

Android 从 R(11) 开始对获取应用包信息做了限制,官方适配文档链接
1)https://developer.android.com/preview/privacy/package-visibility#common-interactions

2)https://developer.android.com/training/basics/intents/package-visibility

兼容方案:(2个方式任意选择一个,推荐方案一)。

方式一(推荐):

在R上 需要在manifest添加标签(该方式,只获取软件商店信息)

<manifest package="com.example.xxxxx">
    ...
    <queries>
        <package android:name="com.heytap.market"/>
    </queries>
    ...
</manifest>


说明:
标签可能会编译不过,出现此问题请升级Android Studio 和 Gradle 插件:
1)Android Studio 3.6.1 或更高版本
2)最新版本的 Android Gradle 插件

方式二:

在manifest添加下申请如下权限:

<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />

说明:
使用这种方式,后续Android版本可能会收紧这个权限的申请,存在被禁用风险。

代码调用

强调:为了使商店评论页面有盖在当前应用之上的效果,必须满足以下条件
1)Context 必须使用 Activity 对象。
2)Intent 不能使用 Intent.FLAG_ACTIVITY_NEW_TASK 这个Flag。

    private final static String PKG_MK_HEYTAP = "com.heytap.market";//Q之后的软件商店包名
    private final static String PKG_MK_OPPO = "com.oppo.market";//Q之前的软件商店包名
    private final static String COMMENT_DEEPLINK_PREFIX = "oaps://mk/developer/comment?pkg=";
    private final static int SUPPORT_MK_VERSION = 84000; // 支持评论功能的软件商店版本

    /**
     * 拉起评论页面。
     */
    public static boolean jumpToComment(Activity context) {
        // 此处一定要传入调用方自己的包名,不能给其他应用拉起评论页。
        String url = COMMENT_DEEPLINK_PREFIX + context.getPackageName();
        // 优先判断heytap包
        if (getVersionCode(context, PKG_MK_HEYTAP) >= SUPPORT_MK_VERSION) {
            return jumpApp(context, Uri.parse(url), PKG_MK_HEYTAP);
        }
        if (getVersionCode(context, PKG_MK_OPPO) >= SUPPORT_MK_VERSION) {
            return jumpApp(context, Uri.parse(url), PKG_MK_OPPO);
        }
        return false;
    }

    /**
     * 获取目标app版本号~
     *
     * @param context
     * @param packageName
     * @return 返回版本号
     */
    private static long getVersionCode(Activity context, String packageName) {
        long versionCode = -1;
        try {
            PackageInfo info = context.getPackageManager().getPackageInfo(packageName, PackageManager.GET_META_DATA);
            if (info != null) {
                versionCode = Build.VERSION.SDK_INT >= Build.VERSION_CODES.P ? info.getLongVersionCode() : info.versionCode;
            }
        } catch (PackageManager.NameNotFoundException e) {
        }
        return versionCode;
    }

    private static boolean jumpApp(Activity context, Uri uri, String targetPkgName) {
        try {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_VIEW);
            intent.addCategory(Intent.CATEGORY_DEFAULT);
            intent.setPackage(targetPkgName);
            intent.setData(uri);
            // 建议采用startActivityForResult 方法启动商店页面,requestCode由调用方自定义且必须大于0,软件商店不关注
            context.startActivityForResult(intent, 100);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }


建议:
1)使用Activity做为context,并且调用Activity.startActivityForResult方法拉起商店,这样更安全。
2)如果使用startActivityForResult方法拉起商店,requestCode >0 并且 intent 不能设置Intent.FLAG_ACTIVITY_NEW_TASK这个flag。

编辑:yimen,如若转载,请注明出处:https://www.yimenapp.com/kb-yimen/10870/

部分内容来自网络投稿,如有侵权联系立删

(0)
上一篇 2022年11月17日 下午5:24
下一篇 2022年11月17日 下午5:32

相关推荐