前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >撤回了一条消息,60%因为慌乱……

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

作者头像
腾讯云音视频
发布2018-10-25 11:54:57
1.1K0
发布2018-10-25 11:54:57
举报
文章被收录于专栏:音视频咖音视频咖

健身瑜伽跑步机

IT中年硬标配

健身,不求身体健康

而是为了更好的工作

手动感慨2分钟后

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

虽是动动手指撤回了信息

但需求背后的代码……

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

消息收发

01

发出的消息,能撤回吗?

一言不合就撤回

技术上,是这么实现的

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

02

小程序如何接入发送消息

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

SDK用法

01

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

设置消息格式

02

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

采用离线消息推送

设置全局推送

示例

代码语言:javascript
复制
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> 中添加以下配置:

代码语言:javascript
复制
<!--  消息收发 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>

设置离线推送处理

代码语言:javascript
复制
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

获取群成员列表

获取群成员列表

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

示例:

代码语言:javascript
复制
//读取群组成员
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产品

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-10-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯云音视频 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档