撤回了一条消息,60%因为慌乱……

健身瑜伽跑步机

IT中年硬标配

健身,不求身体健康

而是为了更好的工作

手动感慨2分钟后

小编撤回了keep的3公里跑步截图

虽是动动手指撤回了信息

但需求背后的代码……

今天,我们来了解一下即时通讯常见的坑

消息收发

01

发出的消息,能撤回吗?

一言不合就撤回

技术上,是这么实现的

消息撤回:消息需要在2分钟以内撤回

02

小程序如何接入发送消息

使用小程序开发工具引入 【微信小程序Demo..】的文件夹,就可以看到demo正确运行

SDK用法

01

如何禁用推送角标的功能?

设置消息格式

02

安卓app后台运行收不到消息

采用离线消息推送

设置全局推送

示例

TIMOfflinePushSettings settings = new TIMOfflinePushSettings();
//开启离线推送
settings.setEnabled(true);
//设置收到 C2C 离线消息时的提示声音,这里把声音文件放到了 res/raw 文件夹下
settings.setC2cMsgRemindSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.dudulu));
//设置收到群离线消息时的提示声音,这里把声音文件放到了 res/raw 文件夹下
settings.setGroupMsgRemindSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.dudulu));

TIMManager.getInstance().configOfflinePushSettings(settings);

集成云通信IM SDK

配置 AndroidManifest

由于 ImSDK 的离线推送依赖于服务,所以需要应用在

AndroidManifest.xml 的 <application></application> 中添加以下配置:

<!--  消息收发 service -->
<service
    android:name="com.tencent.qalsdk.service.QalService"
    android:exported="false"
    android:process=":QALSERVICE" >  
</service>
<!--  消息收发辅助 service -->
<service  
    android:name="com.tencent.qalsdk.service.QalAssistService"  
    android:exported="false"
    android:process=":QALSERVICE" >
 </service>
<!--  离线消息广播接收器 -->
<receiver
    android:name="com.tencent.qalsdk.QALBroadcastReceiver"
    android:exported="false">
    <intent-filter>
        <action android:name="com.tencent.qalsdk.broadcast.qal" />
    </intent-filter>
</receiver>
<!--  系统消息广播接收器 -->
<receiver
    android:name="com.tencent.qalsdk.core.NetConnInfoCenter"  android:process=":QALSERVICE">  
    <intent-filter>
        <action android:name="android.intent.action.BOOT_COMPLETED" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.TIME_SET" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.TIMEZONE_CHANGED" />
    </intent-filter>
</receiver>

设置离线推送处理

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();

        Log.d("MyApplication", "app oncreate");
        // 只能在主进程进行离线推送监听器注册
        if(MsfSdkUtils.isMainProcess(this)) {
            Log.d("MyApplication", "main process");

            // 设置离线推送监听器
            TIMManager.getInstance().setOfflinePushListener(new TIMOfflinePushListener() {
                @Override
                public void handleNotification(TIMOfflinePushNotification notification) {
                    Log.d("MyApplication", "recv offline push");

                    // 这里的 doNotify 是 ImSDK 内置的通知栏提醒,应用也可以选择自己利用回调参数 notification 来构造自己的通知栏提醒
                    notification.doNotify(getApplicationContext(), R.drawable.ic_launcher);
                }
            });
        }
    }
}

接口调用

01

如何集成自有网站的账号

单独导入用户信息

02

查看在线人数并获取账号ID

获取群成员列表

获取群成员列表

/* function getGroupMemberInfo  
 *   获取群组成员列表
 * params:
 *   options    - 请求参数,详见api文档
 *   cbOk    - function()类型, 成功时回调函数
 *   cbErr    - function(err)类型, 失败时回调函数, err为错误对象
 * return:
 *   (无)
 */
getGroupMemberInfo: function(options, cbOk, cbErr) {},

示例:

//读取群组成员
var getGroupMemberInfo = function (group_id) {
    initGetGroupMemberTable([]);
    var options = {
        'GroupId': group_id,
        'Offset': 0, //必须从0开始
        'Limit': totalCount,
        'MemberInfoFilter': [
            'Account',
            'Role',
            'JoinTime',
            'LastSendMsgTime',
            'ShutUpUntil'
        ]
    };
    webim.getGroupMemberInfo(
            options,
            function (resp) {
                if (resp.MemberNum <= 0) {
                    alert('该群组目前没有成员');
                    return;
                }
                var data = [];
                for (var i in resp.MemberList) {
                    var account = resp.MemberList[i].Member_Account;
                    var role = webim.Tool.groupRoleEn2Ch(resp.MemberList[i].Role);
                    var join_time = webim.Tool.formatTimeStamp(
                    resp.MemberList[i].JoinTime);
                    var shut_up_until = webim.Tool.formatTimeStamp(
                    resp.MemberList[i].ShutUpUntil);
                    if (shut_up_until == 0) {
                        shut_up_until = '-';
                    }
                    data.push({
                        GroupId: group_id,
                        Member_Account: account,
                        Role: role,
                        JoinTime: join_time,
                        ShutUpUntil: shut_up_until
                    });
                }
                $('#get_group_member_table').bootstrapTable('load', data);
                $('#get_group_member_dialog').modal('show');
            },
            function (err) {
                alert(err.ErrorInfo);
            }
    );
};

关系链资料管理

01

拉黑的好友,能再加回来吗

拉入黑名单是解除好友关系了,这里解除黑名单设置后还需要重新添加好友才能在好友列表中看到的

02

获取陌生人头像和昵称

需获取用户ID然后调用获取资料的方法获取

03

相同图片二次传输需要流量吗

IMSDK 的上传图片做了秒传逻辑,即如果服务器检测到已有这张图片,服务器会立即返回该图片上传成功,并不会再次耗费传图片的流量。

音视频交流群友,正在召唤你

扫一扫下方二维码,加小编微信,进群交流

(由于群友已超100人,需加成员拉进群)

扫一扫下方二维码,关注“腾讯云视频”公众号

获取更多视频技术服务

点击“阅读原文”

了解云通信IM产品

原文发布于微信公众号 - 腾讯云视频(txvideocloud)

原文发表时间:2018-10-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

一个和任天堂游戏机有关的0-day漏洞,可能对大多Linux系统造成影响

上个月,我们发布过一篇相关红白机的Ubuntu漏洞,利用恶意构建的红白机音乐文件就能触发——这是著名安全专家Chris Evans的杰作;实际上,超任也存在这种...

2085
来自专栏影子

springMVC项目国际化(i18n)实现方法

3539
来自专栏DHUtoBUAA

C#实现局域网内远程开机

1、远程开机原理      远程开机Wake on LAN(WOL),俗称远程唤醒,远程唤醒的实现主要是向目标主机发送特殊格式的数据包,是AMD公司制作的Mag...

4339
来自专栏linux、Python学习

60个DevOps开源工具,你在用哪些?

你喜欢免费的东西吗?获得开发者社区支持的自动化,开源的工具是大家梦寐以求的。这里列举了 60 多款最棒的开源工具,可以帮助你很好的实行 DevOps。

1730
来自专栏技术翻译

为微服务架构编写端到端测试

微服务架构的一个主要方面是应用程序形成为松散耦合的服务的集合,每个服务可以独立地部署并且通过某种轻型协议相互通信。

1951
来自专栏北京马哥教育

60个DevOps开源工具,你在用哪些?

你喜欢免费的东西吗?获得开发者社区支持的自动化,开源的工具是大家梦寐以求的。这里列举了 60 多款最棒的开源工具,可以帮助你很好的实行 DevOps。

1252
来自专栏Grace development

PHP程序员如何简单的开展服务治理架构(二)

服务治理 治理的绝笔是服务,在一家公司有玩各种语言的程序员,如何去统一管理他们开发的服务,这是一个问题。

1752
来自专栏進无尽的文章

基础篇-iOS后台运行以及相关

对于APP的前后台运行情况的了解,有助于我们在实际开发中规避一些问题,以及采取稳妥的方法处理和解决问题,是很必须的。

4731
来自专栏大魏分享(微信公众号:david-share)

API管理平台的部署方式和成功案例

API Manager和API网关公有云托管方式。客户将自己的API后端集成到API网关

1082
来自专栏FreeBuf

“撬锁”实战:绕过云锁提权某游戏私服

朋友给我了我一个游戏私服的shell,说是提权不下服务器,让我帮忙看看。本文仅为大家提供一个思路,这个方法可能很多人知道但是并没有公布到网络。我今天写出来只是为...

1665

扫码关注云+社区

领取腾讯云代金券