1. 程式人生 > >Android 使用極光推送訊息詳細介紹之自定義訊息

Android 使用極光推送訊息詳細介紹之自定義訊息

前言

上一篇文章,我們詳細介紹了下極光推送的使用,不過還是差一點,那就是自定義訊息的使用.這一篇,我們將慢慢來熟悉極光推送的自定義訊息的使用,附上本人的上一篇文章,有興趣的可以去看看:
http://blog.csdn.net/greathfs/article/details/52076367

效果圖

估計慣例,上圖:
這裡寫圖片描述

使用

首先,通過上一篇的介紹(或者去看官方的文件),我們知道自定義訊息不會展示在通知欄,完全要開發者寫程式碼去處理,我們來做一個實驗看看是不是,我們在我們的程式碼中加上輸出,最後我們看我們的輸出日誌裡面有沒有,同時我們也要看我們的模擬器上有沒有通知,好了,我們先在我們的程式碼中加上輸出,在我們的自定義的BroadcastReceiver中的onReceive()方法中加上下面那段程式碼:

 if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
        } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent.getAction())) {
            String message=bundle.getString(JPushInterface.EXTRA_MESSAGE);
            System.out.println("收到了自定義訊息。訊息內容是:" + message);
            String extra=bundle.getString(JPushInterface.EXTRA_EXTRA);
            System.out.println("收到了自定義訊息。extra是:"
+ extra);

OK,我們現在去極光上推送一個自定義訊息
這裡寫圖片描述

然後我們發現,我們的模擬器並沒有出現任何通知,這是我們看下我們的輸出日誌:
這裡寫圖片描述

OK,我們看見我們那邊推送的自定義訊息這邊成功接到,同時我們還發現,我們在推送內容中輸入的資訊,打印出來是一串字串,而我們在下面可選設定裡面輸入的資料,打印出來卻是一個Json格式字串,通過解析字串,實現應用需要的推送效果

OK,既然我們知道是Json字串,那我們就把它解析出來,拿到我們需要的資料就可以了

   /**
             * 通過輸出日誌我們知道extra是JSON格式的字串
             * 解析Json
             */
Map<String, Object> map = new HashMap<String, Object>(); JSONObject jsonObject; try { jsonObject = new JSONObject(extra); String key = jsonObject.getString("key"); map.put("key", key); } catch (JSONException e) { e.printStackTrace(); } map.put("message", message); Calendar calendar = Calendar.getInstance(); SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); String date = format.format(calendar.getTime()); map.put("date", date);

我們在看下那個效果圖,點選訊息後出現一個列表,其實那是一個ListView,在佈局檔案裡面就定義好了,只不過沒有讓他顯示出來,只有點選訊息時,它才會出現,那麼它的資料從哪來呢?很簡單,就是我們剛才解析出來的資料,同時用一個List去接收就好了,這樣就實現了自定義訊息了,很簡單是不是!!!
附上MainActivity程式碼:

package com.example.hfs.jpushexample;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;

import com.example.hfs.jpushexample.adapter.MyAdapter;

import cn.jpush.android.api.JPushInterface;

public class MainActivity extends AppCompatActivity {

    private ImageView mImageView;
    private BadgeView mBadge;
    private LinearLayout mLinearLayout;
    private ListView mListView;
    private MyAdapter mAdapter;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        JPushInterface.setDebugMode(true);
        JPushInterface.init(this);

//        JPushInterface.setAlias(this, "test123456", new TagAliasCallback() {
//            @Override
//            public void gotResult(int i, String s, Set<String> set) {
//                Log.d("alias", "set alias result is" + i);
//            }
//        });
//
//        Set<String> sets = new HashSet<>();
////        sets.add("sport");
//        sets.add("game");
//        sets.add("music");
//
//        JPushInterface.setTags(this, sets, new TagAliasCallback() {
//            @Override
//            public void gotResult(int i, String s, Set<String> set) {
//                Log.d("alias", "set tag result is" + i);
//            }
//        });

        mImageView= (ImageView) this.findViewById(R.id.image_message);
        mListView= (ListView) this.findViewById(R.id.list);
        mAdapter=new MyAdapter(this,Data.data);
        mListView.setAdapter(mAdapter);
        mLinearLayout= (LinearLayout) this.findViewById(R.id.layout_message);
        mLinearLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mListView.setVisibility(View.VISIBLE);
                mAdapter.notifyDataSetChanged();
                Toast.makeText(MainActivity.this,"Data.data:"+Data.data.size(),Toast.LENGTH_SHORT).show();
            }
        });
        mBadge = new BadgeView(MainActivity.this, mImageView);
        if (Data.data.size()>0){
            mBadge.setText(String.valueOf(Data.data.size()));
            mBadge.show();
        }

    }

    @Override
    protected void onResume() {
        super.onResume();
        JPushInterface.onResume(this);
    }

    @Override
    protected void onPause() {
        super.onPause();
        JPushInterface.onPause(this);
    }
}

解釋下其中一段程式碼:

 mBadge = new BadgeView(MainActivity.this, mImageView);
        if (Data.data.size()>0){
            mBadge.setText(String.valueOf(Data.data.size()));
            mBadge.show();
        }

相關推薦

Android 使用極光訊息詳細介紹定義訊息

前言 上一篇文章,我們詳細介紹了下極光推送的使用,不過還是差一點,那就是自定義訊息的使用.這一篇,我們將慢慢來熟悉極光推送的自定義訊息的使用,附上本人的上一篇文章,有興趣的可以去看看: http://blog.csdn.net/greathfs/articl

android 極光 聲音與振動 的關閉和開啟

fff getc 用法 koa pub tar brush asi drawable   前言:最近剛好在寫一些推送方面的東西,又是新手,不斷在網上找資料,很少,不過還是找到了一些,反正百度我是再也不想百度了,谷歌一下子就能找到想要的。   廢話不多說。  

android 極光 定義聲音

可以定義樣式,那麼可以禁用極光的聲音,收到通知就播放一個聲音就好:禁用: // 極光 JPushInterface.setDebugMode(IS_DEBUG); JPushInterface.init(this); BasicPushNotificationB

ionic平臺下的Android極光整合文件

雖然當前提供推送服務的第三方有很多,例如jpush,友盟,個推,騰訊信鴿等。但是由於大部分第三方只支援原生環境,再加上考慮到ionic平臺下網上已經提供了一套jpush的整合方案,所以我只是針對在jpush下ionic app推送做一些簡要的整理。 廢話不多說,直入主題。

Android極光通過不同的通知內容跳入不同的頁面

1、在註冊清單中加入 <receiver android:name="your receiver全路徑" android:enabled="true"> <intent-filter> <!-- 以下是要

Android極光區分測試正式環境詳解

前沿: 極光推送是我們在實際生活中使用比較多的一種推送方式,成本低廉,不少公司都是使用的他,換工作之後,當前公司還是使用的極光推送。 問題/需求想要效果: 當前的公司需要測試環境的只能夠推送測試,正式環境的只能夠推送正式,應為IOS方存在可以直接通過配

Android 極光整合與使用詳解

極光新建應用 首先需要有極光賬號,在後臺新建應用 新建時會要求上傳app圖示和填寫app名字,然後需要完成推送設定 點選推送設定後出現android 與iOS的按鈕,點選android後填寫包名就好, 然後點選下載Demo來下載需要整合的控制元件

android 極光快速自動整合及,定義通知樣式及雙指下拉通知欄顯示全部內容

一,整合步驟: 1.極光推送官網,註冊,登入,建立應用,用專案包名獲取AppKey: 注:包名必須與專案的包名一致 2.在 module 的 gradle 中新增依賴和支援: android { ...... defaultConfig {

Android極光定義通知問題

private void showInspectorRecordNotification() { RemoteViews customView = new RemoteViews(context.getPackageName(), R.layout.

# Android 極光伺服器端和移動端

Android 極光推送伺服器端和移動端 這裡是Android 有關伺服器端進行推送和手機客戶端接收的一些簡單的例子 伺服器端採用的是MyEclipse2014,手機端是Android studio 2.0 下面是一個簡單的JSP頁面程式碼 <

Android極光(Android studio 3.0+)

使用步驟: Step 1.建立應用: 進入極光控制檯後,點選“建立應用”按鈕,進入建立應用的介面。 填上你的應用程式的名稱以及應用包名這二項就可以了, 最後點選最下方的 “建立我的應用”按鈕,建立應用完畢。 Step 2. 根目錄的主

Android Studio 3.0踩坑篇定義apk名稱

報錯日誌 Cannot set the value of read-only property ‘outputFile’ Android Studio3.0之前用法如下 applicationVariants.all { variant ->

VC++定義訊息

使用者可以自定義訊息,在應用程式中主動發出,這種訊息一般用於應用程式的某一部分內部處理。   例項說明: 當用戶按鍵盤上的游標上移鍵時,程式傳送使用者自定義訊息,在對應的訊息響應函式中彈出訊息對話方塊,顯示訊息傳送成功。   操作步驟: (1)建立一個單文

Android 中使用極光訊息詳細介紹(一)

簡介 在Android開發中,伺服器有時候會向客戶端推送一些使用者可能感興趣的訊息,比如:淘寶,網易新聞,美團等都會向我們客戶端推送訊息.今天我就介紹一個第三方免費推送訊息的服務:極光推送 官方資源 具體使用 效果 官方提供了Demo

Android開發第三方JPush極光知識點詳解 學會整合第三方SDK

下面是一些知識點介紹,後期將會帶領大家進行程式碼實戰: 一、Android實現推送方式解決方案: 1、推送方式基礎知識:    在移動網際網路時代以前的手機,如果有事情發生需要通知使用者,則會有一個視窗彈出,將告訴使用者正在發生什麼事情。可能是未接電話

Android 根據訊息內容跳轉至指定頁面(極光

首先認識一下安卓newIntent方法的使用:newIntent方法的使用在於如果activity已經開啟了,並設定了啟動模式為:  android:launchMode="singleTask"的時候,當再次使用intent來啟動這個activtiy的時候就會進入這個方法裡

Android 使用極光定義訊息打造個性的訊息效果

極光推送,是一個面向普通開發者開放的,免費的第三方訊息推送服務。本篇部落格將結合案例介紹極光推送自定義訊息的使用方法,利用自定義訊息實現專案中特定的訊息推送需求。 本案例將實現如圖效果: 參考官方Android SDK 教程完成鐳射推送的基本配置 區

Android開發魅族手機收不到極光JPush通知

情景 收不到通知,狀態列沒有、聲音沒有、控制檯不列印log 如果是控制檯不列印log,那就找MyReceiver找到推送的程式碼部分,檢視編譯是否有問題,有問題的話是肯定不通過的。而且日誌也顯示不出來。 正常的收到推送的話會出來兩條訊息,一條是系統通知,一

極光伺服器端向android等客戶端例項

原文:http://blog.csdn.net/u014733374/article/details/43560983 找了兩天,總算找到一個靠譜的了。開始測試的時候總是報各種錯誤,尤其是不能找到audience的錯誤,偶然想到,用極光開放平臺整合的客戶

極光詳細介紹

一、極光推送介紹 說起推送,不得不提到極光,高效,穩定,最重要的是免費(使用者量不是非常大的情況下),讓它在推送界佔據了很高地位,如果沒有完全沒有用過的話,還是要花點時間去研究一下,或者遇到一些問題,下面我詳細地一步一步來介紹它,廢話不多說,一起操練起來吧。 二、使用 1