android离线通知方案,Android 模仿离线推送

首先简单阐述一下我对于消息推送的理解,这里拿QQ来举例吧,当我们手机端的QQ离线了,并且退出了QQ应用,但是这时候如果别人给我们发了信息,我们没有上线。服务器会将发送者发送的信息推送过来然后我们发布通知来显示通知我们的用户

原理简单阐述:

通过以上概述,我们基本了解我们需要一个独立进程的后台服务,在AndroidManifest

.xml中注册Service时,有一个android:process属性这个属性有2种情况,即为.和:两种,其中.代表为此服务开启一个全局的独立进程,如果以:开头则为此服务开启一个为此应用私有的独立进程

编码实现:

ServerPushService文件:

import android.app.Notification;

import android.app.NotificationManager;

import android.app.PendingIntent;

import android.app.Service;

import android.content.Intent;

import android.os.IBinder;

public class ServerPushService extends Service{

//获取消息线程

private MessageThread messageThread = null;

//点击查看

private Intent messageIntent = null;

private PendingIntent messagePendingIntent = null;

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安卓方案及比较 经常有朋友困扰于Android上面实现的技术,希望知道各种方案的优缺点、性能、开发难度等,于是特意写了这篇文章。 方案一: Google官方的服务: 但,通过对比研究发现C2DM机制存在以下缺点: 1)GCM要求Android系统必须是2.2以上的版本,所以对于不少2.2以前的系统没法 2)国内服务不稳定。而且不少国内的终端厂商纷纷把Google的服务去掉,替换上自己的。 3)需要用户绑定Google账号,但不少国内用户没有Google账号。 方案二: 利用MQTT协议,broker做代理服务器,但是随着用户的增多这个方案会有问题,因为broker的连接数有上限,到了一定程度后就无法连接了,这也就导致消息很难发出去。 总之,连接数量有限制。 方案三: 基于XMPP协议,很多人都建议使用这个,谷歌官方的C2DM也是基于XMPP研发的,使用这个方案不会依赖android系统,也不依赖于谷歌服务器。 •XMPP协议比较费电费流量,对当前智能机的消耗太大 •在窄带网络和不稳定的(手机)网络都不是最优的选择。 方案四: 最近新出的一种是APNS,这个也不需要自己架设服务器(可以查看http://www.push-notification.mobi/),很简单,自己不用开发服务端。不过很少有人去用,不是很稳定 主要有以下特点: •快速集成:提供一种比C2DM更加快捷的使用方式,避免各种限制. •无需架设服务器:通过使用"云服务",减少额外服务器负担. •可以同时消息到网站页面,android 手机 •耗电少,占用流量少. 第三方服务: 目前也有不少第三方提供了服务,由于接入简单、服务比较专业可靠、还提供报表等,不少国内开发者和企业都采用这种方案。比如国外的parse、pubnub,国内的个,都是这类。36kr前段时间有报道,新浪微博就是用的一家叫“个”的第三方服务(有兴趣的朋友可以前往查看 http://www.igetuicom) 特点: •方便,易集成 •没有C2DM中的版本限制和必须用gmail绑定 •云服务,不用架设自己的服务器 •系统稳定、专业,能够承受高并发支持 •简单高效,并且省电
Android线中,可以通过设置 Notification 样式来自定义通知外观。以下是一些常见的 Notification 样式及设置方法: 1. BigTextStyle:展示一个大文本区域,可以显示更多的文字内容。 ```java NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId) .setContentTitle("Title") .setContentText("Content") .setStyle(new NotificationCompat.BigTextStyle() .bigText("Big Text")) .setSmallIcon(R.drawable.ic_notification); ``` 2. InboxStyle:展示一个收件箱,可以显示多个文本条目。 ```java NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId) .setContentTitle("Title") .setContentText("Content") .setStyle(new NotificationCompat.InboxStyle() .addLine("Line 1") .addLine("Line 2") .addLine("Line 3")) .setSmallIcon(R.drawable.ic_notification); ``` 3. BigPictureStyle:展示一张大图,可以显示更多的图片内容。 ```java NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId) .setContentTitle("Title") .setContentText("Content") .setStyle(new NotificationCompat.BigPictureStyle() .bigPicture(bitmap) .bigLargeIcon(null)) .setSmallIcon(R.drawable.ic_notification); ``` 4. MessagingStyle:展示聊天消息,可以显示多个消息条目。 ```java NotificationCompat.Builder builder = new NotificationCompat.Builder(context, channelId) .setContentTitle("Title") .setContentText("Content") .setStyle(new NotificationCompat.MessagingStyle("Me") .addMessage("Message 1", timestamp1, null) .addMessage("Message 2", timestamp2, "Sender 2")) .setSmallIcon(R.drawable.ic_notification); ``` 可以在应用程序中根据需要设置上述样式,同时可以设置通知的标题、内容、图标、声音等属性。请注意,自定义通知样式可能会因 Android 系统版本或厂商定制的不同而有所不同,需要进行测试和适配。同时,还需要在 AndroidManifest.xml 文件中配置相应的权限和服务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值