基于Windows Azure服务器的GCM推送——Android端集成

原创 2015年11月19日 14:55:04

项目中用到消息推送,要用到Google的GCM推送,就简单的记录一下:

参考地址:http://www.windowsazure.cn/documentation/services/mobile-services/

一、

下载并导入需要的jar包:mobileservices-2.0.3.jar 、 guava-17.0.jar 、 notifications-1.0.1.jar

二、

在启动的Activity中加入以下代码:

其中PushAppUrl 是服务端集成给出的

PushAppKey  是在Google控制台申请的

<span style="font-size:14px;">    public static MobileServiceClient mClient;
 try {
            mClient = new MobileServiceClient(Constants.PushAppUrl, Constants.PushAppKey, this);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }</span>

三、注册并接受推送过来的消息

NotificationsManager.handleNotifications(getActivity(),
        Constants.SENDER_ID, MyNotificationHandler.class);

public class MyNotificationHandler extends NotificationsHandler {
    private NotificationManager mNotificationManager;
    NotificationCompat.Builder builder;
    Context ctx;

    @Override
    public void onReceive(Context context, Bundle bundle) {
        ctx = context;
        String nhMessage = bundle.getString("Notification");
        PushMsgModel pModel = JsonHelper.getGson().fromJson(nhMessage, PushMsgModel.class);
        if (!pModel.getBody().getTag().equalsIgnoreCase(SPUtils.getPushTag())) {
            return;
        }
        sendNotification(context, pModel);
    }

    @Override
    public void onRegistered(final Context context, final String gcmRegistrationId) {
        super.onRegistered(context, gcmRegistrationId);

        new AsyncTask<Void, Void, Void>() {

            protected Void doInBackground(Void... params) {
                try {
                    String[] tags = {ShareData.CurrPushTag};
                    MainActivity.mClient.getPush().register(gcmRegistrationId, tags);
                    return null;
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return null;
            }
        }.execute();
    }

    private void sendNotification(Context context, PushMsgModel pModel) {
        mNotificationManager = (NotificationManager)
                ctx.getSystemService(Context.NOTIFICATION_SERVICE);

        NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(ctx)
                .setSmallIcon(R.drawable.ic_launcher)
                .setContentTitle(pModel.getTitle())
                .setStyle(new NotificationCompat.BigTextStyle()
                        .bigText(pModel.getHeader()))
                .setAutoCancel(true)
                .setContentText(pModel.getHeader());
        mNotificationManager.notify(0, mBuilder.build());
    }

四、最后别忘了在配置AndroidManifest.xml信息

添加需要的权限和

<!-- push -->
<receiver
    android:name="com.microsoft.windowsazure.notifications.NotificationsBroadcastReceiver"
    android:permission="com.google.android.c2dm.permission.SEND">
    <intent-filter>
        <action android:name="com.google.android.c2dm.intent.RECEIVE" />
        <category android:name="com.waitur.app.customer" />
    </intent-filter>
</receiver>
具体操作参见文章开头的网址




Android开发学习之路--Broadcast Receiver之初体验

学习了Activity组件后,这里再学习下另一个组件Broadcast Receiver组件。这里学习下自定义的Broadcast Receiver。通过按键自己发送广播,然后自己接收广播。新建MyB...
  • eastmoon502136
  • eastmoon502136
  • 2016年02月13日 21:32
  • 3957

Android学习之 监听网络连接状态的改变

应用在运行的过程中,如果rur
  • l416112167
  • l416112167
  • 2014年06月21日 23:32
  • 2639

windows平台下载android源码

最近在看《android内核剖析》,很多细节不具体看代码很难理解,记住了印象也不深,感觉还是跟着源码走一遍好些,回来下载android源码,遇到不少问题,终于开始下载了,整理下流程,鉴于网上很多教程时...
  • jason0539
  • jason0539
  • 2014年04月18日 13:37
  • 17374

MapPath使用方法

 Title: 有关Server.Mappath详细接触  [2004-3-5]        ...
  • Meinherz
  • Meinherz
  • 2006年08月09日 17:38
  • 1520

android四大组件启动流程-BroadcastReceiver启动流程(基于android 6.0)

前面已经写过Activity的启动流程:http://blog.csdn.net/newhope1106/article/details/53355189 和 Service的启动流程:http:/...
  • newhope1106
  • newhope1106
  • 2017年01月07日 17:07
  • 1331

【安卓笔记】作为内部类的广播接收者

在【全面解析service组件】一文中我们提到了采用广播接收者(BroadcastReceiver)使service与activity进行通信。在该例子中我们在service子类中定义了一个自定义的广...
  • RowandJJ
  • RowandJJ
  • 2014年02月19日 17:33
  • 7585

微信web开发者工具

微信开发一般都需要一个自己的服务器;如果没有服务器等资源,我们就需要用到web开发工具了; 为帮助开发者更方便、更安全地开发和调试基于微信的网页,我们推出了 web 开发者工具。它是一个桌面应用,通...
  • SFNES
  • SFNES
  • 2016年10月04日 10:13
  • 2235

what is a geo clsuter?

Definition of Cluster:A group of servers that together act as a single system, enabling load balanci...
  • iiiiher
  • iiiiher
  • 2017年04月27日 14:18
  • 170

安卓四大控件之BroadcastReceiver详解

BroadcastReceiver详解广播的概念Android:系统在产生某个事件时发送广播,应用程序使用广播接收者接收这个广播,就知道系统产生了什么事件。 Android系统在运行的过程中,会产生很...
  • qq_27280457
  • qq_27280457
  • 2016年07月06日 17:00
  • 18493

Android静态安全检测 -> Broadcast Receiver组件暴露

Broadcast Receiver组件暴露 - exported属性 1. android:exported 该属性用来标示,当前Broadcast Receiver是否可以从当前应用外部获取Re...
  • u013107656
  • u013107656
  • 2016年07月12日 17:17
  • 2226
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于Windows Azure服务器的GCM推送——Android端集成
举报原因:
原因补充:

(最多只允许输入30个字)