android定时顶栏推送消息

在用安卓或者ios设备时,经常会有应用会弹出推送消息。这里我就把我之前写的推送贴出来。用得上的朋友可以借鉴一下。ios之后有空在贴上

最近搜索看这个的朋友比较多。这个也只是单独的内置推送。时时推送与服务器关联 我们可以用SDK云推送来实现我们所需的需求。相关介绍内容。往下移!

首先XML

<!-- 安卓推送服务 -->
<service android:name=".MessageService"
 android:enabled="true"
 android:exported="true"
 android:label="PushService"
 android:launchMode="singleInstance"
 android:persistent="true"
 android:process=":push" >
   <intent-filter>
    <action android:name="com.xxxx.action.MY_SERVICE" />
  <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>
</service>
<receiver
 android:name="com.tt.xxxxx.download.GTAlarmReceiver"
 android:permission="com.android.launcher.permission.INSTALL_SHORTCUT"
 android:enabled="true"
 android:exported="true"
 >
 <intent-filter>
  <action android:name="com.android.launcher.action.INSTALL_SHORTCUT" />
 </intent-filter>
</receiver>
<!--end add-->

里面的. :。这些符号很坑爹。不懂的可以查下字段属性说明。

推送类:

/******************************** 类 *************************************/
package com.ttad.yxcb;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.app.Service;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.widget.Toast;
import java.text.SimpleDateFormat;
import com.tt.yingxiongchibis.download.GTDownloaderActivity;
public class MessageService extends Service {
     //获取消息线程
     private MessageThread messageThread = null;

     //点击查看
     private Intent messageIntent = null;
     private PendingIntent messagePendingIntent = null;

     //通知栏消息
     private int messageNotificationID = 1000;
     private Notification messageNotification = null;
     private NotificationManager messageNotificatioManager = null;

     public IBinder onBind(Intent intent) {
         return null;
     }

     @Override
  public void onCreate() {
       //初始化
         messageNotification = new Notification();
         messageNotification.icon = R.drawable.app_icon_ucs;
         messageNotification.tickerText = "알림";
         messageNotification.defaults = Notification.DEFAULT_SOUND;
         messageNotificatioManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
         //点击跳转的activity
         messageIntent = new Intent(this, GTDownloaderActivity.class);
         messagePendingIntent = PendingIntent.getActivity(this,0,messageIntent,0);

         //开启线程
         messageThread = new MessageThread();
         messageThread.isRunning = true;
         messageThread.start();
         //Toast.makeText(MessageService.this, "", Toast.LENGTH_LONG).show();
   super.onCreate();
  }
  /**
      * 从服务器端获取消息
      *
     */
     class MessageThread extends Thread{
         //运行状态,下一步骤有大用
         public boolean isRunning = true;
         public void run() {
             while(isRunning){
                 try {
                     //休息10分钟
                     Thread.sleep(1000);
                     //获取服务器消息
                     String serverMessage = getServerMessage();

                     if(serverMessage!=null&&!"".equals(serverMessage)){
                         //更新通知栏
                         messageNotification.setLatestEventInfo(MessageService.this,"알림",serverMessage,messagePendingIntent);
                         messageNotificatioManager.notify(messageNotificationID, messageNotification);
                        //每次通知完,通知ID递增一下,避免消息覆盖掉
                       messageNotificationID++;
                    }
               } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }
     }
  @Override
   public void onDestroy() {
             // System.exit(0);
               //或者,二选一,推荐使用System.exit(0),这样进程退出的更干净
               messageThread.isRunning = false;
               //super.onDestroy();
   }
    /**
     * 这里以此方法为服务器Demo,仅作示例
    * @return 返回服务器要推送的消息,否则如果为空的话,不推送
     */
    public String getServerMessage(){

     SimpleDateFormat sdf=new SimpleDateFormat("HHmmss");
     String date=sdf.format(new java.util.Date());

     String in = date;
     if(date.equals("195500"))
     {
      String str = "잠시후 전쟁터 시작됩니다. 준비해주세요.";
      return str;
     }
     else if(date.equals("212500"))
     {
      String str = "잠시후 보스전 시작됩니다. 준비해주세요.";
      return str;
     }
     else
     {
      return "";
     }

    }
}

最后,调用方式:

//推送
  Intent intent = new Intent();
        // 设置Action属性
        intent.setAction("com.ttad.yxcb.action.MY_SERVICE");
        // 启动该Service
        startService(intent);
  // startService(new Intent(ExTextActivity.this, MessageService.class));

-----------------------------------------------------------------------------------------------------------

云推送SDK:

  • 百度云推送
  • 腾讯信鸽推送

先推荐这两个。其他的大家可以百度搜索 云推送SDK。  至于接入方式。都有SDK文档。很简单的。

如果是Unity接入。可以参考我的SDK接入的相关文章。或者留言问我。

本文链接:

https://www.bobsong.net/145.html
1 + 4 =
2 评论
    2015年11月26日 回复

    请问怎么接入unity做推送啊,我用了小米推送插件,但是苦于插件冲突,又不懂android,还请楼主指点下。

      2015年11月26日 回复