1. 程式人生 > >小米殺不死的訊息推送-- Android、java後端同時接入小米推送

小米殺不死的訊息推送-- Android、java後端同時接入小米推送

作者簡介

微信公眾號(高質量文章推送):陳博易


案例演示

前言

小米手機選擇小米推送的原因:App程序被殺死的情況下,小米手機上的小米推送服務並不會被殺死(除非使用者手動在設定中關閉了該推送的許可權),所以我選擇給大家分享下小米推送。
這裡參考了一篇大佬的文章:http://www.jianshu.com/p/d77eaca4e52a

環境以及工具

環境:Android AndroidStudio3.0 Java專案:IntelliJ IDEA 2017.2.3

整體步驟

  1. 在小米開發者站開通小米開發者賬號
  2. 啟用推送服務
  3. 下載SDK、文件和DEMO
  4. SDK整合和除錯

詳細步驟

核心步驟解讀

  1. 建立一個小米開發推送調式應用
    image.png

image.png

image.png

image.png

獲取應用核心資料

  1. 修改APP_ID、APP_KEY、包名(應用核心資料)
    修改APP_ID、APP_KEY

修改清單檔案

修改包名

校驗前端的sdk環境是否正常

public class mipushtest {
    public static void main(String[] args) {
        Constants.useOfficial();
        Sender sender = new Sender("hYsI0lYsM+9lpgjyBV1gig==");//申請到的AppSecret
        String messagePayload = "This is a message(一般這裡都是json字串)"
; String title = "notification title(通知標題)"; String description = "notification description(通知簡介)"; Message message = new Message.Builder() .title(title) .description(description).payload(messagePayload) .restrictedPackageName("com.xiaomi.mipushdemoboy"
) .passThrough(0) // 設定訊息是否通過透傳的方式至App, 1表示透傳訊息, 0表示通知欄訊息(預設是通知欄訊息) .notifyType(-1) // 設定通知型別, type型別(-1, 1-使用預設提示音提示, 2-使用預設震動提示, 3-使用預設led燈光提示) .build(); try { //registrationId regId是app在客戶端向小米推送服務註冊時, // 小米推送服務端根據裝置標識和appId以及當前時間戳生成, // 因此能夠保證每個裝置上每個app對應的regId都是不同的, // 可以作為每臺裝置上app的唯一標識 // 注:需要開發者自己的伺服器接收客戶端返回的regid並存儲在自身伺服器 // retries代表傳送失敗後重試的次數 sender.send(message, "7iuW9yVMV+s61aG1AVD7rXC+LHNs561t/rcAL1a3v84=", 1); //傳送訊息到一組裝置上, regids個數不得超過1000個 //傳送給所有的註冊成功的應用 //sender.broadcastAll(message, 1); // } catch (IOException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } } }
  1. Android核心程式碼介紹
public class DemoMessageReceiver extends PushMessageReceiver {

    private String mRegId;//每臺裝置上app的唯一標識,為了方便測試將返回的regid記錄下來,方便在後端的推送

    //方法用來接收伺服器向客戶端傳送的透傳訊息。
    @Override
    public void onReceivePassThroughMessage(Context context, MiPushMessage message) {
    }

    //用來接收伺服器向客戶端傳送的通知訊息,這個回撥方法是在通知訊息到達客戶端時觸發。
    // 另外應用在前臺時不彈出通知的通知訊息到達客戶端也會觸發這個回撥函式。
    @Override
    public void onNotificationMessageArrived(Context context, MiPushMessage message) {
    }

    //方法用來接收伺服器向客戶端傳送的通知訊息,這個回撥方法會在使用者手動點選通知後觸發
    @Override
    public void onNotificationMessageClicked(Context context, MiPushMessage message) {
    }
    //方法用來接收客戶端向伺服器傳送命令後的響應結果。
    @Override
    public void onCommandResult(Context context, MiPushCommandMessage message) {
    }

    //方法用來接收客戶端向伺服器傳送註冊命令後的響應結果。
    @Override
    public void onReceiveRegisterResult(Context context, MiPushCommandMessage message) {

}

總結

總算把android的環境和java後端環境都除錯通了,如果大家還不懂的可以私聊我哦。

請關注我(高質量文章推送)

原始碼地址———關注微信公眾號,回覆:小米推送原始碼


長按二維碼“識別”關注或者掃一掃

相關推薦

小米訊息-- Androidjava同時接入小米

作者簡介 微信公眾號(高質量文章推送):陳博易 前言 小米手機選擇小米推送的原因:App程序被殺死的情況下,小米手機上的小米推送服務並不會被殺死(除非使用者手動在設定中關閉了該推送的許可權),所以我選擇給大家分享下小米推送。 這裡參

AndroidStudio離線打包MUI集成JPush極光並在java管理

覆蓋 如果 dep record tco mat resource 靜態 pkg 1.AndroidStudio離線打包MUI   如何離線打包請參看上篇隨筆《AndroidStudio離線打包MUI》 2.集成極光推送   官方文檔:https://docs.jig

你想要的全平臺全棧開源專案 - VueReact小程式Android原生ReactNativejava

全平臺全棧開源專案 coderiver 今天終於開始前後端聯調了~ 首先感謝大家的支援,coderiver 在 GitHub 上開源兩週,獲得了 54 個 Star,9 個 Fork,5 個 Watch。 這些鼓勵和認可也更加堅定了我繼續寫下去的決心~ 再次感謝各位大佬! 專案地址: github.co

Android 關於執行緒 的 開機啟動 浮動框

參考資料 殺不死 http://blog.csdn.net/t12x3456/article/details/8982198– http://blog.csdn.net/marswin89/article/details/50917098– http://blo

Android 從底層實現讓應用(1)

情景還原: 我的應用呼叫了Notification,但是如果被流氓清理軟體殺死,在有些機型出現Notification沒有被抹除的情況,因為喪失了對Notification的引用,使用者也無法抹除這個Notification,這將大大降低使用者體驗。於是,我想出

淺談Android記憶體洩漏&&實現的無介面後臺Service

以前看大神的部落格,都說沒有碰到過記憶體洩漏或者OOM就不算真正的搞過Android…以前我覺得這事離我還好遠…. 沒想到,這次真的是遇上了!! 專案需求是這樣的:app開機自啟,啟動之後app就一直在run,是一直run!(開機自啟,現在大概也就只有在AR

Android 的程序

最近和同事討論微信殺死程序結束後,還能收到好友發來的微信這功能。以前一直用著,沒有去研究這技術。最近專案提前完成,有了點空閒時間,就研究這技術。然後寫了個demo,試著執行,發現OK了。在這給朋友分享下,可能有不夠好的地方,歡迎大神們指出。 首先,正常下,當我們退出程式或

十字叉病毒,的小強,一次雲服務器淪陷實錄

不讓 .sh 最後一行 nag 平時 再看 如果 cal 查看系統 一、現象 接到客戶的電話,說自己的雲服務器被提供商禁止訪問了,原因是監測到網絡流量暴滿,服務器不停的向外發包,在確認客戶沒有業務量突增的情況下,初步判斷可能服務器遭受了流量攻&擊(DDOS),不過按

721個C&C伺服器?的銀行木馬Emotet

趨勢科技上週公佈了知名銀行木馬Emotet的蹤跡,發現它在今年6月1日到9月15日之間,於全球具備721個命令暨控制(C&C)伺服器,採用8,528個獨立的URL,使用5,849個檔案Dropper以及571個執行檔案。2014年被發現的Emotet是個模組化的先進銀行木馬程式,其主要功

的Webshell

在日常應用中。是否遇到過明明後門都刪除完了,可是過一會兒又會出現?感覺就像殺不死一樣。。。 那麼它們是怎麼做到的呢? 看程式碼: <?php set_time_limit(0); ignore_user_abort(1); unlink(__F

Java實現安卓/IOS移動訊息(百度雲

本文主要介紹Java伺服器端如何藉助第三方推送平臺(百度雲推送)推送給移動端訊息。 使用案例介紹: 根據客戶的需求,需要做一個類似淘寶訊息推送的功能,客戶下訂單、訂單付款、訂單商品已發貨,以及客戶完成評論,都需要以訊息推送提示的方式告知商家和賣家這麼一個功能,由於之前沒有實現過這方面的功

解決linux下tomcat的shutdown命令程序

tomcat在windows下可以直接關閉,但是貌似在Linux下有時候shutdown.sh 沒有關閉tomcat程序; 現象: 在Linux下shutdown.sh ,然後檢視tomcat程序發現沒有完全關閉; #檢視tomcat程序是否關閉語句 ps -ef

java伺服器呼叫JPush極光api通知訊息

呼叫JPush推送的api,官網上已經有很詳細的說明了,我只是寫了一個小的demo測試下了! 在極光推送的官網註冊帳號,獲得應用標識(AppKey) , API MasterSecret , apk應用,將apk安裝在手機上並執行, 後臺測試程式碼: package com.zensoftware.

linux中的程序

殺一個程序的時候,剛殺死,又會換一個程序id繼續執行,嘗試諸多方法後才知道,該程序有父程序,想結束它,必須先結束它的父程序,總結一下 程序的檢視 命令 功能 ps 檢視程序 ps a 顯示現行終端機下所有的程式,包括其

Python踩坑之旅其一的Shell子程序

目錄 1.1 踩坑案例 1.2 填坑解法 1.3 坑位分析 1.4 坑後擴充套件 1.4.1 擴充套件知識 1.4.1 技術關鍵字 1.5 填

Linux的程序之CPU使用率700%

1. 問題發現 [root@zwlbs3 ~]# top i. 發現有個程序CPU使用率居然700%,COMMAND 是一些隨機的字串組成,完了~ 中標了;第一想到就是“沙雕”它,kill 命令給我上。 [root@zwlbs3 ~]# kill -9 "PID"

我的,終將讓我更強大 -----致漫長而孤獨的2020

  一場突如其來的疫情,徹底打亂了我的生活節奏   我本該早早回到學校,同一群青春活潑的同學一起學習,同舍友一起開黑,同女朋友一起看海,完成我充滿希望的大學二年級。   然而,我已經快半年沒有和同齡人面對面相處、交流。爸媽也忙於上班,每天大部分時間都是一個人在家無聊地上網課、刷手機。   這還沒完,4月份家中

一對老耗子,每個月都生一對小耗子。小耗子長3個月,第四個開始變成老耗子開始生! 假如都,那麼請問24個月有多少隻耗子?

package 第五天的作業;/* * 一對老耗子,每個月都生一對小耗子。小耗子長3個月,第四個開始變成老耗子開始生! 假如都不死,那麼請問24個月後有多少隻耗子? *//* * 思路 * 設計ONE TWO THREE OLD四個變數, * 存放第一個月,第二個月,第三個月,老耗子的數量 * */publ

js前端與javamd5加密時一致問題

今天做專案的驗籤問題時,發現前端的js的md5加密結果與java後端加密結果不一致,總結原因有兩個: 一個是中文問題,需要前後端約定編碼才行,如: js前端: encodeURIComponent("我愛中國") java後端: URLEncoder.encod

(AndroidJava) MD5加密方法

Android、Java在http請求的時候都會做兩端加密驗證,有的會使用AES加密、解密,但大部分都是使用到MD5單向加密驗證,方法很簡單,只是在加密之前一定要串一個特殊的保密密匙(要混淆)! 需要導包 import java.security.MessageDigest;