推送可以及时,主动的与用户发起交互

(1)继承jar包,照示例AndroidManifest.xml添加.

(2)自定义MyApp继承自Application,在onCreate方法中调用JPushInterface.init(MainActivity.this);

或者在Activity的onCreate中调用.

(3)另外,在activity的onResume方法要调用JPushInterface.onResume(this);否则,推送不会出现,

在onPause中调用JPushInterface.onPause(this);

这样,可以通过服务器往安装了App的所有用户发送一条推送.

通过Alias往客户端发送信息.

在客户端的onCreate中

JPushInterface.setAlias(MainActivity.this, "aa", new TagAliasCallback() {

                    @Override

                    public void gotResult(int arg0, String arg1, Set<String> arg2) {

                        Log.e("info",arg1+"-----------");

                        //arg1是tag

                    }

                });

这句就是将"aa"当成该设备的别名,达到往指定客户端发送消息的目的.

别名和签名设置的异常处理

有时会因为网络原因,有一定几率设置别名或标签失败.

privatevoidsetAlias() {

EditText aliasEdit = (EditText) findViewById(R.id.et_alias);

String alias = aliasEdit.getText().toString().trim();

if(TextUtils.isEmpty(alias)) {

Toast.makeText(PushSetActivity.this,R.string.error_alias_empty, Toast.LENGTH_SHORT).show();

return;

}

if(!ExampleUtil.isValidTagAndAlias(alias)) {

Toast.makeText(PushSetActivity.this,R.string.error_tag_gs_empty, Toast.LENGTH_SHORT).show();

return;

}

// 调用 Handler 来异步设置别名

mHandler.sendMessage(mHandler.obtainMessage(MSG_SET_ALIAS, alias));
} privatefinalTagAliasCallback mAliasCallback =newTagAliasCallback() { @Override publicvoidgotResult(intcode, String alias, Set<String> tags) { String logs ; switch(code) { case: logs ="Set tag and alias success"; Log.i(TAG, logs); break; case: logs ="Failed to set alias and tags due to timeout. Try again after 60s."; Log.i(TAG, logs); mHandler.sendMessageDelayed(mHandler.obtainMessage(MSG_SET_ALIAS, alias),*); break; default: logs ="Failed with errorCode = "+ code; Log.e(TAG, logs); } ExampleUtil.showToast(logs, getApplicationContext()); }
}; privatestaticfinalintMSG_SET_ALIAS =; privatefinalHandler mHandler =newHandler() { @Override publicvoidhandleMessage(android.os.Message msg) { super.handleMessage(msg); switch(msg.what) { caseMSG_SET_ALIAS: Log.d(TAG,"Set alias in handler."); // 调用 JPush 接口来设置别名。 JPushInterface.setAliasAndTags(getApplicationContext(), (String) msg.obj,null, mAliasCallback); break; default: Log.i(TAG,"Unhandled msg - "+ msg.what); } }
};

自定义通知栏的样式

自定义样式放在init()之后.

                CustomPushNotificationBuilder builder=new CustomPushNotificationBuilder(MainActivity.this, R.layout.my_push, R.id.iv_push, R.id.tv_title, R.id.tv_content);

                builder.statusBarDrawable=R.drawable.ic_category_2;//最顶层状态栏小图标

                builder.layoutIconDrawable=R.drawable.ic_category_2;  //下拉状态时显示的通知图标.

                JPushInterface.setPushNotificationBuilder(2, builder);
JPushInterface.setDefaultPushNotificationBuilder(builder); //设置该对话框为默认

.自定义消息:

所接收的消息不再局限于Notification,而是可以直接取出消息中的内容,从而用自己的方式显示给用户.

此时需要自定义一个MyReceiver继承自BroadcastReceiver.

public class MyReceiver extends BroadcastReceiver {

    @Override

    public void onReceive(Context ctx, Intent intent) {

        Bundle bundle =intent.getExtras();   //接受到消息

        Log.e("info", "[MyReceiver] onReceive - " + intent.getAction() + ", extras: " + printBundle(bundle));

          if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {

                String regId = bundle.getString(JPushInterface.EXTRA_REGISTRATION_ID);

                Log.d("info", "[MyReceiver] 接收Registration Id : " + regId);

                //send the Registration Id to your server...

            } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {

                Log.d("info", "[MyReceiver] 接收到推送下来的自定义消息: " + bundle.getString(JPushInterface.EXTRA_MESSAGE));

//                processCustomMessage(ctx, bundle);

            } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent.getAction())) {

                Log.d("info", "[MyReceiver] 接收到推送下来的通知");

                int notifactionId = bundle.getInt(JPushInterface.EXTRA_NOTIFICATION_ID);

                Log.d("info", "[MyReceiver] 接收到推送下来的通知的ID: " + notifactionId);

            } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {

                Log.d("info", "[MyReceiver] 用户点击打开了通知");

                JPushInterface.reportNotificationOpened(ctx, bundle.getString(JPushInterface.EXTRA_MSG_ID));

//                //打开自定义的Activity

                Intent i = new Intent(ctx, TwoActivity.class);

                i.putExtras(bundle);

                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                ctx.startActivity(i);

            }

    }

    // 打印所有的 intent extra 数据

    private static String printBundle(Bundle bundle) {

        StringBuilder sb = new StringBuilder();

        for (String key : bundle.keySet()) {

            if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {

                sb.append("/nkey:" + key + ", value:" + bundle.getInt(key));

            } else {

                sb.append("/nkey:" + key + ", value:" + bundle.getString(key));

            }

        }

        return sb.toString();

    }

在类中接收完消息后,还需要在AndroidManifest.xml中添加

<!--自定义接收  -->

<receiver

    android:name="com.lj.pushdemo1.MyReceiver"

    android:enabled="true">

    <intent-filter>

        <action android:name="cn.jpush.android.intent.REGISTRATION" />

        <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />

        <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />

        <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />

        <category android:name="com.lj.pushdemo1" />

    </intent-filter>

</receiver>

获取 RegistrationID API

集成了JPush SDK的应用程序第一次注册到JPush服务器时,服务器会返回一个唯一的该设备的标识:RegistertionID.

String id=JPushInterface.getRegistrationID(MainActivity.this);

调用网络接口来发送消息

 

 

sendno:发送的编号.

app_key: 应用程序的appKey

receiver_type:接受者的类型 ----2.指定tag----3.指定alias----4.广播----5.根据registrationId进行推送.

msg_content:发送的内容,在这里必须要JSON格式.

platform:要发送的平台

verfication_code:将sendno+receiver_typ+receiver_values+API MasterSecret(在应用的详细信息里面)字符串拼接起来后,用md5加密

 

设置保留最近通知条数 API

JPushInterface.init(context);

JPushInterface.setLatestNotificationNumber(context,);保留最近的3条



android极光推送初步了解的更多相关文章

  1. Android 极光推送造成IM服务绑定失败bug

    由于极光推送对8.0的支持问题,升级到了最新版本的极光推送.但是最新版本的极光推送,默认将推送服务设置到了新的进程里面,由此引发 Android 极光推送多进程造成的application运行两次 和 ...

  2. 【android极光推送】—从客户端到后台,一文通吃

    sion android:name="android.permission.VIBRATE" /> <uses-permission android:name=&quo ...

  3. android极光推送

    版权声明:本文为博主原创文章,未经博主允许不得转载. Android开发记录18-集成推送服务的一点说明 关于推送服务,国内有很多选择,笔者也对它们进行了一个详细的对比,一般我们产品选择推送服务主要考 ...

  4. Android 极光推送JPush---自定义提示音

    极光推送提供三种方法实现Notification通知 三方开发平台发送普通消息,客户端设置PushNotificationBuilder,实现基础的Notification通知 三方开放平台发送普通消 ...

  5. Android 极光推送集成

    集成Jpush 1.用Android Studio创建一个Demo 2.创建激光推送开发者账号,要创建极光推送开发者帐号,请访问极光推送官方网站https://www.jiguang.cn/push ...

  6. android 极光推送 声音与振动 的关闭和开启

    前言:最近刚好在写一些推送方面的东西,又是新手,不断在网上找资料,很少,不过还是找到了一些,反正百度我是再也不想百度了,谷歌一下子就能找到想要的. 废话不多说. 1.主要方法就是如下一个函数 priv ...

  7. .net平台借助第三方推送服务在推送Android消息(极光推送)

    最近做的.net项目(Windows Service)需要向Android手机发送推送消息,真是有点困难,没有搞过就不停的搜文档,最后看到了一个开源项目PushSharp,可以在.net平台推送IOS ...

  8. 使用极光推送(www.jpush.cn)向安卓手机推送消息【服务端向客户端主送推送】C#语言

    在VisualStudio2010中新建网站JPushAndroid.添加引用json帮助类库Newtonsoft.Json.dll. 在web.config增加appkey和mastersecret ...

  9. Android实现点击通知栏后,先启动应用再打开目标Activity ,极光推送等推送的也可以参考一下(转)

    我因为项目中集成了极光推送,推送的通知栏点开需要确定进入哪个界面就参考了这边文章,感谢作者的无私. 标签: 情况简述 在开发Android app的过程中,遇到这样一个需求:app中启动一个Servi ...

随机推荐

  1. py3.6+anaconda下安装opencv3

    py3.6+anaconda下安装opencv3 首先声明-网上的方法大多数都是有毒的.也不知道给的什么鬼方法都不行. 我说下我的方法.去这个网站https://pypi.tuna.tsinghua. ...

  2. openstack多region介绍与实践---转

    概念介绍 所谓openstack多region,就是多套openstack共享一个keystone和horizon.每个区域一套openstack环境,可以分布在不同的地理位置,只要网络可达就行.个人 ...

  3. 十:HDFS Short-Circuit Local Reads 短路本地读取

    当client请求数据时,datanode会读取数据然后通过TCP协议发送给client.short-circuit绕过了datanode直接读取数据.short-circuit的前提是client和 ...

  4. Notes of the scrum meeting before publishing(12.17)

    meeting time:18:30~20:30p.m.,December 17th,2013 meeting place:3号公寓一层 attendees: 顾育豪                  ...

  5. pfx 证书怎么打开

    其实双击就能够自动运行导入向导的 不行的话使用我的办法: 单击开始--运行--里输入mmc 然后单击文件--选择添加删除管理单元--再选择添加--拉动滚动条找到证书一项,点击添加再点击完成(不用做任何 ...

  6. PokeCats开发者日志(十)

      现在是PokeCats游戏开发的第三十三天的中午,收到了中国版权保护中心软件登记部发来的受理通知书.   上易版权看一眼,貌似离拿证不远了.   想一想还有点小激动呢!

  7. The New Day

    于博毅 160809107 爱好电脑研究 选大学专业的时候,把计算机类放在了第一专业,当时从小就很喜欢计算机,以前有接触过编程但仅限于看书,并没有动手实践过,选课的时候看了一下专业课程,都是我想学的 ...

  8. 分享几个.Net计划任务组件

    Quartz http://www.quartz-scheduler.net/ Hangfire http://hangfire.io/ Install-Package Hangfire 使用OWIN ...

  9. MySQL优化之profile

    分析SQL执行带来的开销是优化SQL的重要手段.在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析.该参数可以在全局和session级别来设置.对于全局级别则作用于整个MySQL ...

  10. QT分析之调试跟踪系统

    原文地址:http://blog.163.com/net_worm/blog/static/127702419201002004518944/ 在我们前面的分析中,经常看到qWarning()和qDe ...