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

栏目: IT技术 · 发布时间: 6年前

内容简介:友盟 Messenger 无法发送消息umeng Messenger 无法发送消息umeng Facebook Messenger 无法发送消息

友盟 Messenger 无法发送消息

umeng Messenger 无法发送消息

umeng Facebook Messenger 无法发送消息

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

可能的原因有2点:

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

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

解决方案

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

代码如下:

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 本身分享出去也是无法区分成功和取消,博主便稍微偷个懒,选个不需要处理回调的。

总结

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

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

如果有什么建议或者问题可以随时联系我,共同探讨学习:


以上所述就是小编给大家介绍的《友盟 SDK 分享到 Messenger 无法发送消息》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。

重来2

重来2

[美] 贾森·弗里德、[美] 戴维·海涅迈尔·汉森 / 苏西 / 中信出版社 / 2014-4-8 / 39.00元

“不再需要办公室”,这不仅仅是未来才有的事——它已经发生了。现在,轮到你迈开脚步,跟上时代的步伐了。 上百万的员工和成千上万的企业已经发现了远程工作的乐趣和好处。然而,远程工作方式还没有成为常见的选择。事实上,远程工作的技术手段都已齐备。还没有升级换代的,是人们的思想。 这本书的目的就是帮你把想法升级换代。作者会向你展示远程工作的诸多好处:可以找到最优秀的人才,从摧残灵魂的通勤路上解脱......一起来看看 《重来2》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具