Android长连接与通知栏问题研究

长连接问题

1.一开始说用长连接我以为后台会用WebSocket,所以打算用OkHttp(OkHttp将WebSocket进行了封装)进行长连接,当完成以后发现报 http1.1 400链接错误,跟后台要了源码发现后台用的是Socket.io进行的长连接。

后台代码

所以有了一个疑问 Socket.io与WebSocket的区别是什么,通过查询了解主要区别是:node.js提供了高效的服务端运行环境,但是由于浏览器端对HTML5的支持不一,为了兼容所有浏览器,提供卓越的实时的用户体验,并且为程序员提供客户端与服务端一致的编程体验,于是socket.io诞生。Socket.io将Websocket和轮询 (Polling)机制以及其它的实时通信方式封装成了通用的接口,并且在服务端实现了这些实时机制的相应代码。也就是说,Websocket仅仅是 Socket.io实现实时通信的一个子集。长连接问题解决完了

2.Notication获取通知以后的显示问题

Notication有三种模式,普通模式、折叠模式、悬挂模式,在完成开发一后发现新的8.0系统手机没有弹出提示框,查询资料发现,谷歌在新的系统里面加了通道通知权限问题

//安卓版本8.0以上需要添加通道

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

NotificationChannel mChannel =new NotificationChannel(id, name, NotificationManager.IMPORTANCE_NONE);

mChannel.setShowBadge(true);

notificationManager.createNotificationChannel(mChannel);

}

在完成8.0通知适配的时候还发现,导入appcompat包的时候没有关于7.0与8.0的包

implementation'com.android.support:appcompat-v7:25.0.1'

查了一下资料发现,安卓只添加到版本25的包添加v7:27.0.1'的话需要在build里面引入maven

repositories {

jcenter()

maven {

url"https://maven.google.com"

    }

}

这样才能成功导入implementation'com.android.support:appcompat-v7:27.1.1'包完成开发

2.第二个问题是在完成导包以后发现,实现通知有两种写法

Notification notification =new NotificationCompat.Builder(LoginActivity.this, id).build();

Notification.build notification =new NotificationCompat.Builder(LoginActivity.this, id);

虽然代码实现起来是一样的但是发现第一种写法当来消息的时候在状态栏上会有提示,并且会有提示音,第二种写法是没有的。但是第二种写法收到消息是将消息缩略显示而第一种是展开显示,有需要的朋友可以看demo

代码地址:逝水无痕 /socket.io与noticication通知

你可能感兴趣的:(Android长连接与通知栏问题研究)