前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >友盟 SDK 分享到 Messenger 无法发送消息

友盟 SDK 分享到 Messenger 无法发送消息

作者头像
他叫自己MR.张
发布2020-05-28 15:26:20
1.4K0
发布2020-05-28 15:26:20
举报
文章被收录于专栏:Android必知必会Android必知必会

友盟 Messenger 无法发送消息 umeng Messenger 无法发送消息 umeng Facebook Messenger 无法发送消息


由于项目的登录和分享基于友盟进行的设计,接入 Facebook Messenger 分享,发出去的消息总是提示【无法发送消息 轻触了解详情】

可能的原因有2点:

  1. Messenger 平台从 2019 年 6 月 10 日开始,新应用将不再支持将应用中的链接和媒体分享至 Messenger 的功能,详见 官方公告 ;(此条不成立,文章底部有更新)
  2. 友盟分享 SDK 处理 Messenger 的相关代码比较老旧,新应用使用的话不再被官方接受了,也就不能发送成功。

既然官方都发公告说不支持将应用中的链接和媒体分享至 Messenger 的功能了,那就真的没办法了吗? 经过测试,虽然有些限制,但还是可以直接将应用中的链接分享至 Messenger 的,至于媒体,没有进行单独测试,理论上可行。

解决方案

简单点来说就是调用 Facebook 官方最新 SDK 里的方法进行分享。 代码如下:

代码语言:javascript
复制
import com.facebook.share.model.ShareLinkContent;
import com.facebook.share.widget.MessageDialog;


ShareLinkContent content = new ShareLinkContent.Builder()
                        .setContentUrl(Uri.parse("https://xxx.xxx/xxx"))
                        .build();
//不需要回调
MessageDialog.show(context, content);

//需要回调
MessageDialog messageDialog = new MessageDialog(context);
messageDialog.registerCallback(CallbackManager.Factory.create(), new com.facebook.FacebookCallback<com.facebook.share.Sharer.Result>() {
    @Override
    public void onSuccess(com.facebook.share.Sharer.Result result) {
    
    }
    @Override
    public void onCancel() {

    }
    @Override
    public void onError(com.facebook.FacebookException error) {

    }
});
messageDialog.show(content);

那么问题来了,怎么和友盟的 SDK 进行结合呢?毕竟如果项目的整个分享模块都是基于友盟来设计的话,必须要在它这个体系内才行。

另外,通过粗略的阅读友盟分享 SDK 的相关逻辑,好像并没有提供自定义分享渠道的逻辑,分享渠道的处理类 UMxxHandler (xx 指分享渠道,比如 UMLineHandler 是 Line 分享渠道的处理类) 又很多是写死在源码里的,是否能调用到 onActivityResult 也是预先写死的,这就很难受了。

我这里提供一个简单的思路:重写某个用不到的分享渠道的 UMxxHandler 来实现。

如果也需要调用到 onActivityResult 来进行分享结果的回调处理,那需要把所有的分享渠道的代码看一下,看看哪些有覆写了 getRequestCode()onActivityResult()方法,即有分享结果回调处理逻辑,挑一个用不到的分享渠道,然后去覆写它的 share() 方法来进行具体的分享操作。

博主选了 UMFlickrHandler 进行了重写,它没有处理回调的情况。Messenger 本身分享出去也是无法区分成功和取消,博主便选了这个,选个不需要处理回调,也不需要再额外处理code,唯一不太好的就是一旦点击分享,就直接回调成功了。

更新于 20200503 Messenger 平台更新日志 通读了一下更新日志,发现 2020 年 3 月 4 日 Messenger 平台又重新支持将应用中的链接和媒体分享至 Messenger 的功能了 2020 年 3 月 4 日 Messenger 平台公告

  • 推出 Messenger Webhook Versioning - 允许提供一个窗口,让开发者能够选择加入影响 Webhook 的平台更改。可以实时完成版本更改,并在需要时回滚到之前版本,促成顺畅迁移。
  • 分享到 Messenger SDK 的最新情况 - 去年六月,我们宣布了不再支持分享到 Messenger SDK 的计划。我们很高兴与大家分享,我们将继续支持分享到 Messenger SDK 的修改版本,该版本将允许用户将您应用程序中的链接和照片分享到 Messenger。我们将在未来几周内逐步推出适用于 iOS 版 Messenger 应用链接和图像/视频分享的支持。我们将不再支持分享常规和多媒体素材的模板。如果您的应用中仍包含此 SDK,则无需采取任何操作。

总结

友盟的 SDK 吧,一言难尽,鉴于项目过于依赖它(登录、分享、Push模块),我也只能选择继续用着。这里趁机也提示一下,它的 Line 分享功能也是有 Bug 的。

今天五一了,祝大家代码日日精进。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/05/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解决方案
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档