【Android】Parse 开发笔记(4)—— Push Notifications(上)

简介:

一、系列

1.1 【Parse】开发笔记(1)—— 准备

1.2 【Parse】开发笔记(2)—— 从Mysql导入数据到Parse Data

1.3 【Parse】开发笔记(3)—— 实现查找附近的功能(LBS) 

二、准备

2.1 官网的Android Push Notifications

https://www.parse.com/tutorials/android-push-notifications

2.2  【Android】Parse Push快速入门指南

http://www.cnblogs.com/over140/archive/2013/03/19/2968560.html  

三、 功能

3.1 准备

AndroidManifest.xml

     < uses-permission  android:name ="android.permission.INTERNET"   />
     < uses-permission  android:name ="android.permission.ACCESS_NETWORK_STATE"   />
     < uses-permission  android:name ="android.permission.RECEIVE_BOOT_COMPLETED"   />
     < uses-permission  android:name ="android.permission.VIBRATE"   />


     < application
        
android:name ="com.nmbb.lol.LOLApplication"
        android:allowBackup
="true"
        android:icon
="@drawable/app_icon"
        android:label
="@string/app_name"
        android:theme
="@style/AppTheme"   >
         < service  android:name ="com.parse.PushService"   />

         < receiver  android:name ="com.parse.ParseBroadcastReceiver"   >
             < intent-filter >
                 < action  android:name ="android.intent.action.BOOT_COMPLETED"   />
                 < action  android:name ="android.intent.action.USER_PRESENT"   />
             </ intent-filter >
         </ receiver >
        
         < receiver  android:name =".receiver.ReceiverPush"   >
             < intent-filter >
                 < action  android:name ="com.nmbb.lol.push"   />
             </ intent-filter >
         </ receiver >
     </ application >

  代码说明:

注意,这只是代码片段,加入项目做相应的调整。 

a)、android.permission.RECEIVE_BOOT_COMPLETED权限非必须,可以把这个和ParseBoradcastReceiver的BOOT_COMPLETED一起去掉,但重启后可能就无法接收推送了,需要打开一次应该才可以。(我就想这样!能少用一个权限就少一个)注意消息不会丢失,会在下一次一起收到。

b)、PushService必须要注册,否则无法使用 

c)、ReceiverPush后面要用到,主要用于接收广播,方便自己处理推送数据。 

Application

    @Override
     public  void onCreate() {
         super.onCreate();

        Parse.initialize( this, "Application ID",
                "Client Key");
         //  PushService.subscribe(this, "", WebActivity.class);
        PushService.setDefaultPushCallback( this, WebActivity. class);
        ParseInstallation.getCurrentInstallation().saveInBackground();
    }

 代码说明:

除了配置AndroidManifest.xml,仅在Application的onCreate中加入这三行代码即可。

a)、注意最后一行好像是最近更新加上的,否则无法接收到Push,大意是登记注册的意思,可以在Data Browser中对象Installation中看到。

b)、setDefaultPushCallback第二个参数,表示点击Notifacation时处理的Activity

 

3.2 以通知(Notification)的形式显示推送信息(状态栏显示通知)

进入Parse后台的Push Notifications,点击Send a push 

3.2.1 以消息(Message)的形式发送

通过查看发送报告,发现其实也是以JSON数据发送的,不过只包含alert节点。 

 

3.2.2 以JSON形式发送 

 

title和alert分别对应Android Notification对象的标题和消息,不设置title就默认显示APP的名称。

最后点击Send Notification就可以了,顺利的话可以看到设备上收到Notification。

 

3.2.3 处理通知信息

当点击状态栏的通知时,会默认跳转到setDefaultPushCallback指定的Activity中,可以从Intent中解析Push的数据:

 

直接从getIntent().getStringExtra("com.parse.Data")即可取到上面的信息,然后完成业务逻辑即可。

3.2 自定义以广播的形式后台接受推送信息(状态栏不显示通知)

只要以JSON格式发送,并且不包含title和alert节点,即不会显示Notification了(大家可以反编译看一下StandardPushCallback类),那么如何接受Push的数据呢?

3.2.1 首先注册Boradcast,设置Intent-filter,这里设置的action是com.nmbb.lol.push,代码上面已经给出。

3.2.2 json数据:

{"action":"com.nmbb.lol.push","url":"http://v.youku.com/player/getRealM3U8/vid/XNTU1NjkzMDAw/type/mp4/v.m3u8"}

必须包含action和匹配的值,才能接受到推送广播。接下来就可以做你想做的事情了!这里贴一下Boradcast代码:

public  class ReceiverPush  extends BroadcastReceiver {

    @Override
     public  void onReceive(Context context, Intent intent) {
         if (context !=  null && intent !=  null
                && "com.nmbb.lol.push".equals(intent.getAction())) {
             try {
                JSONObject json =  new JSONObject(intent.getExtras().getString(
                        "com.parse.Data"));
                String title = json.optString("title");
                String message = json.optString("message");
                String action = json.optString("action");
                String url = json.optString("url");
                
                ToastUtils.showLongToast(message);
                
            }  catch (JSONException e) {
                Logger.e(e);
            }
        }
    }

}

3.3 其他注意

a). 发送消息时注意右上角的recipients的数量,表示收到推送用户的数量。

b). 注意在Settings中开启Client push

c). 今天还碰到一个特别奇怪的问题,死活收不到推送,不知道是不是和APP名称设置为中文有关系,删了重建弄个英文的又好了。 

四、文章

Android Push Notifications In Parse: A deep overview

本文转自博客园农民伯伯的博客,原文链接:【Android】Parse 开发笔记(4)—— Push Notifications(上),如需转载请自行联系原博主。


目录
相关文章
|
9天前
|
存储 安全 Android开发
安卓应用开发:构建一个高效的用户登录系统
【5月更文挑战第3天】在移动应用开发中,用户登录系统的设计与实现是至关重要的一环。对于安卓平台而言,一个高效、安全且用户体验友好的登录系统能够显著提升应用的用户留存率和市场竞争力。本文将探讨在安卓平台上实现用户登录系统的最佳实践,包括对最新身份验证技术的应用、安全性考量以及性能优化策略。
|
1天前
|
Java Android开发
Android开发--Intent-filter属性详解
Android开发--Intent-filter属性详解
|
2天前
|
物联网 Java 开发工具
安卓应用开发:打造未来移动生活
【5月更文挑战第10天】 随着科技的飞速发展,智能手机已成为我们日常生活中不可或缺的一部分。作为智能手机市场的两大巨头,安卓和iOS分别占据了一定的市场份额。在这篇文章中,我们将重点关注安卓应用开发,探讨如何利用先进的技术和创新思维,为用户打造更加便捷、智能的移动生活。文章将涵盖安卓应用开发的基本概念、关键技术、以及未来发展趋势等方面的内容。
|
3天前
|
Java API 开发工具
java与Android开发入门指南
java与Android开发入门指南
11 0
|
4天前
|
Android开发 Kotlin
Kotlin开发Android之基础问题记录
Kotlin开发Android之基础问题记录
16 1
|
4天前
|
Java Android开发
Android开发@IntDef完美替代Enum
Android开发@IntDef完美替代Enum
13 0
|
5天前
|
Android开发
Android 盒子开发过程中遇到的问题及解决方法
Android 盒子开发过程中遇到的问题及解决方法
8 2
|
5天前
|
机器学习/深度学习 算法 Android开发
安卓应用开发:打造高效通知管理系统
【5月更文挑战第6天】 在现代移动应用的海洋中,用户经常面临信息过载的挑战。一个精心设计的通知管理系统对于提升用户体验至关重要。本文将探讨在安卓平台上如何实现一个高效的通知管理系统,包括最佳实践、系统架构设计以及性能优化技巧。通过分析安卓通知渠道和优先级设置,我们的目标是帮助开发者构建出既能吸引用户注意,又不会引发干扰的智能通知系统。
18 2
|
6天前
|
安全 Linux Android开发
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
该文介绍了如何在Linux服务器上交叉编译Android的FFmpeg库以支持HTTPS视频播放。首先,从GitHub下载openssl源码,解压后通过编译脚本`build_openssl.sh`生成64位静态库。接着,更新环境变量加载openssl,并编辑FFmpeg配置脚本`config_ffmpeg_openssl.sh`启用openssl支持。然后,编译安装FFmpeg。最后,将编译好的库文件导入App工程的相应目录,修改视频链接为HTTPS,App即可播放HTTPS在线视频。
FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
|
11天前
|
存储 Java Android开发
安卓应用开发中的内存优化策略
【4月更文挑战第30天】在移动开发领域,尤其是安卓平台上,内存管理是影响应用性能和用户体验的关键因素。由于安卓设备的硬件资源有限,不合理的内存使用会导致应用响应缓慢、消耗过多电量甚至崩溃。本文将探讨针对安卓平台的内存优化技巧,旨在帮助开发者提高应用的性能和稳定性,从而提升用户满意度。我们将详细讨论内存泄漏的预防、合理的内存分配策略以及高效的内存回收方法。