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

2018-10-25 11:54:57 浏览数 (1)

健身瑜伽跑步机

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产品

0 人点赞