背景:

商品详情页,点击分享,分享到微信好友,点开链接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

 

最新文章

  1. CXF Spring开发WebService,基于SOAP和REST方式 【转】
  2. NOI2018准备 Day11
  3. [译]ASP.NET 5: New configuration files and containers
  4. Hardmard 变换
  5. htc M8 无法自动恢复数据连接(4g)的问题解决
  6. ags模版与vs
  7. Sorting It All Out
  8. uva 10827
  9. 练习2 G题 - 数值统计
  10. ubuntu安装配置gradle
  11. 饿了么移动APP的架构演进(转)
  12. android AChartEngine源代码
  13. input type=&quot;file&quot;去掉取消默认原来选择的文件
  14. java连接sqlserver2008r2 心得
  15. 支付宝使用流程和踩坑小记(附Demo)
  16. web.xml 简记
  17. MyLog
  18. Maven整合SSM测试
  19. 割顶树 BZOJ1123 BLO
  20. 带你了解zabbix如何监控mysql主从到报警触发

热门文章

  1. 编程体系结构(08):Spring.Mvc.Boot框架
  2. shell携带附件,Linux下的自解压文件诞生了
  3. sync.WaitGroup的使用以及坑
  4. docker19.03限制容器使用的内存资源
  5. css选择器 兄弟选择器 相邻兄弟选择器 子元素选择器
  6. C++学习笔记---数据类型
  7. 使用PL/SQL Developer 学习pl/sql
  8. Ⅱ Finite Markov Decision Processes
  9. sentinel控制台与应用通信原理
  10. shiro实现不同身份使用不同Realm进行验证