zoukankan      html  css  js  c++  java
  • App与小程序对接

    背景:

    商品详情页,点击分享,分享到微信好友,点开链接App拉起小程序。

    用户在小程序浏览完成,跳转至原App购买商品。

    功能点:

    实现APP与小程序互调。

    前提:

    已对接好友盟ShareSDK(需要集成完整版SDK,精简版拿不到回调,方法被混淆)

    实现方法:

      1.App唤起小程序。

    ShareAction(this)
            .setPlatform(SHARE_MEDIA.WEIXIN)
             .withMedia(getUMMin())
             .setCallback(shareListener)
              .share()
        /**
         * 小程序
         */
        private fun getUMMin(): UMMin {
    
            val umMin = UMMin(link)//分享链接
                umMin.title = title
                umMin.description = desc
                when (type) {
                    TYPE_NORMAL -> umMin.setThumb(UMImage(this, thumb))
                    TYPE_CARD -> umMin.setThumb(UMImage(this, R.drawable.ic_share_logo))
                }
            umMin.path="pages/product-detail/product-detail?ba_id=${UserUtils.getUserInfo()?.userId}&production_id=${productionId}"//拉起小程序页面的可带参路径,不可为空,为空报错
    
            umMin.userName = WX_USERNAME //填写小程序原始Id(非应用Id)
            return umMin
        }

      2.小程序回调跳转App。

    WXEntryActivity

    class WXEntryActivity : WXCallbackActivity() {
    
        override fun onResp(resp: BaseResp?) {
            super.onResp(resp)
        }
    
        override fun onReq(req: BaseReq?) {
            super.onReq(req)
            req?.run {
                if (type == ConstantsAPI.COMMAND_SHOWMESSAGE_FROM_WX) {
                    goToDetail(this as? ShowMessageFromWX.Req)
                }
            }
            finish()
    
        }
    
        private fun goToDetail(req: ShowMessageFromWX.Req?) {
            try {
                req?.run {
                    if (message.type == WXMediaMessage.IMediaObject.TYPE_APPDATA) {
                        YTRouterUrlExecuter.openUrl(message?.messageExt)
                    }
                }
            } catch (e: Exception) {
                e.printStackTrace()
            }
        }
    }

    经验证,小程序卡片打开小程序后返回App,不会回调onResp方法,而是回调onReq方法。

    而分享至微信后,分享成功返回会正常走onResp方法。

    注意事项:

    1. 对接小程序的userName必须是小程序的原始Id。
    2. 对接小程序的path不能为空,由小程序开发者提供。
    3. 集成ShareSDK必须是完整版。
    4. WXEntryActivity注册必须设置taskAffinity及launchMode,否则不能正常返回。
      <!-- 微信 -->
            <activity
                android:name=".wxapi.WXEntryActivity"
                android:configChanges="keyboardHidden|orientation|screenSize"
                android:exported="true"
                android:screenOrientation="portrait"
                android:theme="@android:style/Theme.Translucent.NoTitleBar"
                android:taskAffinity="${ApplicationId}"
                android:launchMode="singleTask"/>

      5.回调参数在onReq中获取。

    参考链接:

    https://developers.weixin.qq.com/community/develop/doc/00080e5f8986d0b5d18a3153351800?highLine=onResp

     
  • 相关阅读:
    [转载]数据库外键的使用
    [转载]我如何筛选简历与选择人员
    [转载]asp.net中使用Row_Number函数分页
    五一,给心情放个假酷狗电台桌面版
    win32建立弹出式菜单
    GetMessage用法错误导致程序不能退出
    win32在程序当中引用菜单
    WM_COMMAND和WM_KEYDOWN消息的wParam,lParam参数
    单链表的释放内存free(delete)的顺序
    win32 GetMenu()和GetSubMenu()
  • 原文地址:https://www.cnblogs.com/fangg/p/13613096.html
Copyright © 2011-2022 走看看