当前位置:首页 » 《关于电脑》 » 正文

深度解析:Android APP集成与拉起微信小程序开发全攻略

18 人参与  2024年11月03日 08:01  分类 : 《关于电脑》  评论

点击全文阅读


目录

一、背景以及功能介绍

二、Android开发示例

2.1 下载 SDK 

2.2 调用接口

2.3 获取小程序原始Id

2.4 报错提示:bad_param

2.4.1 错误日志

2.4.2 解决方案

相关推荐


一、背景以及功能介绍

        需求:产品经理需要APP跳转到公司的小程序(最好指定页面),做到互联互通,结果在网上搜索几天没找到,事实证明咱的搜索描述有问题。虽然战略调整暂时不需要,但实际该储备还是要储备的,特此记录。

        考虑到部分场景下 APP 需要通过小程序来承载服务,为此 OpenSDK 提供了移动应用(APP)拉起小程序功能。移动应用(APP)接入此功能后,用户可以在 APP 中跳转至微信某一小程序的指定页面,完成服务后再跳回至原 APP 。
        移动应用拉起小程序功能已向全体开发者开放,开发者在微信开放平台账号下申请移动应用并通过审核后,即可获得移动应用拉起小程序功能权限。

跳转规则

对于已通过认证的开放平台账号,其移动应用可以跳转至任何合法的小程序,且不限制跳转的小程序数量。对于未通过认证的开放平台账号,其移动应用仅可以跳转至同一开放平台账号下小程序。

注意:若移动应用未上架,则最多只能跳转小程序100次/天,用于满足调试需求。

二、Android开发示例

2.1 下载 SDK 

在 build.gradle 文件中,添加如下依赖即可:
dependencies {    //两种方式都可以,我这边指定了版本    implementation 'com.tencent.mm.opensdk:wechat-sdk-android:6.8.30'    //api 'com.tencent.mm.opensdk:wechat-sdk-android:+'}
由于 jCenter 服务关停,需要修改成引用 Maven Central,在项目的根 build.gradle 文件中,添加如下代码即可: 
buildscript {    repositories {        jcenter()       // 原有 jCenter 引用可继续保留        mavenCentral()    }}allprojects {    repositories {        jcenter()      // 原有 jCenter 引用可继续保留        mavenCentral()    }}
由于 jCenter 服务关停,需要修改成引用 Maven Central,在项目(高版本)的根 settings.gradle 文件中,添加如下代码即可: 
pluginManagement {    repositories {        google()        mavenCentral()        jcenter()       // 原有 jCenter 引用可继续保留        gradlePluginPortal()    }}dependencyResolutionManagement {    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)    repositories {        google()        mavenCentral()        jcenter()       // 原有 jCenter 引用可继续保留        maven { url 'https://jitpack.io' }    }}

2.2 调用接口

        SDK 下载成功后,直接引用即可。

        调用接口:WXLaunchMiniProgram

        移动应用跳转到小程序示例:

        String appId = "wxd930ea5d5a258f4f"; // 填移动应用(App)的 AppId,非小程序的 AppID        IWXAPI api = WXAPIFactory.createWXAPI(this, "");        WXLaunchMiniProgram.Req req = new WXLaunchMiniProgram.Req();        req.userName = "gh_e41deef720ad"; // 填小程序原始id        req.path = "";        // path:拉起小程序页面的可带参路径,不填默认拉起小程序首页。        // 对于小游戏,可以只传入 query 部分,来实现传参效果,如:传入 "?foo=bar"。        req.miniprogramType = WXLaunchMiniProgram.Req.MINIPTOGRAM_TYPE_RELEASE;// 可选打开 开发版,体验版和正式版        api.sendReq(req);

        因此我们需要针对移动应用申请 AppID。

        因为我仅是调试体验,因此没有移动应用AppId,如果乱填会有如下提示:

2.3 获取小程序原始Id

        路径:进入小程序=>右上方【···(更多)】=>点击弹窗左上方小程序名称=>选择更多资料即可查看。

2.4 报错提示:bad_param

2.4.1 错误日志

        launchWXUsingPendingIntent pendingIntent send failed: com.shenhua.zhihui.ai: Targeting S+ (version 31 and above) requires that one of FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

        Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if some functionality depends on the PendingIntent being mutable, e.g. if it needs to be used with inline replies or bubbles.

        百度翻译:launchWXUsingPendingIntent pendingIntent发送失败:com.shenhua.zhihui.ai:目标S+(版本31及以上)要求在创建pendingIntent时指定FLAG_IMUTABLE或FLAG_MUTTABLE之一。
        强烈建议使用FLAG_IMUTABLE,只有当某些功能依赖于PendingIntent是可变的时,才使用FLAG_MUTTABLE,例如,如果它需要与内联回复或气泡一起使用。

2.4.2 解决方案

        无论第三方应用targetSdkVersion是否升级为30,均需要进行微信 Android SDK版本升级适配。

        targetSdkVersion升级到30的第三方应用,由于Android 11 软件包可见性 特性的影响,OpenSDK的接口可能无法正常拉起微信,从而无法使用微信的部分功能,需要在主工程的AndroidManifest.xml 中增加标签,代码如下:

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools">      ...      // 在应用的AndroidManifest.xml添加如下<queries>标签    <queries>        <package android:name="com.tencent.mm" />   <!--指定微信包名-->    </queries>      ...</manifest>

        测试结果:已经没有上面的错误了,但还是提示 bad_param,不排除我没有添加AppId的可能。后面就不往下走啦,需要


点击全文阅读


本文链接:http://zhangshiyu.com/post/181718.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1