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

(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. 深度学习笔记 (二) 在TensorFlow上训练一个多层卷积神经网络

    上一篇笔记主要介绍了卷积神经网络相关的基础知识.在本篇笔记中,将参考TensorFlow官方文档使用mnist数据集,在TensorFlow上训练一个多层卷积神经网络. 下载并导入mnist数据集 首 ...

  2. 【转载】JAVA常见面试题及解答(精华)

     JAVA常见面试题及解答(精华)       1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: ...

  3. oraclize预言机资料

    oraclize预言机资料 智能合约如何可信的与外部世界交互: https://blog.csdn.net/sportshark/article/details/77477842 国外一篇讲得很详细的 ...

  4. Simple Pipelined Function

    SELECT * FROM TABLE(PKG_TEST.FN_DIC_DB_TAB) CREATE OR REPLACE PACKAGE PKG_TEST IS   TYPE OBJ_DICDB_R ...

  5. HDU 2494/POJ 3930 Elevator(模拟)(2008 Asia Regional Beijing)

    Description Too worrying about the house price bubble, poor Mike sold his house and rent an apartmen ...

  6. centos环境配置(nginx,node.js,mysql)

    1.安装 Install GCC and Development Tools on a CentOS yum group install "Development Tools" n ...

  7. lol人物模型提取(一)

      前段时间去青岛搞团建去了,闲来无事逛了会儿淘宝,无想买个lol手办,意之间发现了这张店铺宣传图:   哎呀我去,这模型做得挺逼真啊,然而这家店铺是卖zoe的cosplay道具的,不是手办-_-|| ...

  8. 理解BitSet

    先来看几道面试题: 1.统计40亿个数据中没有出现的数据,将40亿个不同数据进行排序. 2.现在有1千万个随机数,随机数的范围在1到1亿之间,要求写出一种算法,将1到1亿之间没有在随机数中的数求出来. ...

  9. java出现以下警告:WARN No appenders;WARN Please initialize the log4j的处理方法

    编译java或引用别的代码时出现以下警告: log4j:WARN No appenders could be found for logger (org.apache.zookeeper.ZooKee ...

  10. ManagementObjectSearcher的使用

    1.获取本地路径的网络访问地址 private IEnumerable<KeyValuePair<string, string>> GetShareFolders() { va ...