按照整合的難易程度排序接入步驟接入步驟
在 androidmanifest.xml 中新增許可權
配置推送服務需要的service和receiver
自定義乙個broadcastreceiver類
public class mimessagereceiver extends pushmessagereceiver else if (!textutils.isempty(message.getalias()))
}@override
public void onnotificationmessagearrived(context context, mipushmessage message) else if (!textutils.isempty(message.getalias()))
}@override
public void oncommandresult(context context, mipushcommandmessage message) else
} else
}@override
public void onreceiveregisterresult(context context, mipushcommandmessage message) else }}
}
在 androidmanifest.xml 中註冊該廣播
private void initmipush()
//開啟log
loggerinte***ce newlogger = new loggerinte***ce()
@override
public void log(string content, throwable t)
@override
public void log(string content)
};logger.setlogger(this, newlogger);
}private boolean shouldinit()
}return false;
}
接入步驟(hms-sdk版本:2.4.0.300):
在 androidmanifest.xml 檔案中新增許可權
在 mainactivity 或者 baseacitivty 中初始化華為 push ,放在 oncreate() 中初始化華為 push
private void inithuaweipush(context context)
});log.e(tag, "huawei onconnected, isconnected: " + mclient.isconnected());
}@override
public void onconnectionsuspended(final int i)
});log.e(tag, "huawei onconnectionsuspended, cause: " + i + ", isconnected:" +
" " +
mclient.isconnected());}})
.addonconnectionfailedlistener(new huaweiapiclient.onconnectionfailedlistener()
});log.e(tag, "huawei onconnectionfailed, errorcode: " + connectionresult.geterrorcode());}})
.build();
mclient.connect();
} @override
protected void onstart()
private void gettoken()
// 同步呼叫方式,不會返回token,通過廣播的形式返回。
new thread(new runnable()
}).start();
} public boolean isconnected() else
}
新建 huaweipushreceiver ,繼承 pushreceiver,重寫 ontoken() ,onpushmsg(),onevent(),onpushstate(),在 ontoken() 中可以獲取到 token。
public class huaweipushreceiver extends pushreceiver
@override
public boolean onpushmsg(context context, byte msg, bundle bundle) catch (exception e)
return false;
}public void onevent(context context, pushreceiver.event event, bundle extras)
string content = "--------receive extented notification message: " + extras.getstring
(bound_key.pushmsgkey);
log.d(tag, content);
}super.onevent(context, event, extras);
}@override
public void onpushstate(context context, boolean pushstate) catch (exception e)
}}
獲取到 token 以後就連線成功了。可以測試推送了。
非華為手機使用華為推送需要安裝-華為移動服務.apk
各個版本emui對push的支援情況華為推送在非華為手機上必須安裝華為移動服務,這點比較的坑,使用者可能不會同意安裝的,那就沒得玩了,只適合在華為手機上使用。華為手機上:
emui3.0上,push廣播有很大概率被限制,如: mate7 3.0版本,榮耀6plus,p7 3.0版本,4x, 4a等。
emui3.1上,push廣播基本不被限制,但個別型號機型存在問題,如:榮耀5x等。
emui4.0及以上,push廣播有較高概率被限制,不被限制的機型如:榮耀暢玩4c,榮耀暢玩4x,mate s,p8 max等。
emui4.1 , rom公升級到了最新版本的(80%已公升),通知訊息不走廣播,不會被限制,透傳訊息走廣播,會被限制。
emui5.0以上 ,通知訊息不走廣播,不會被限制,透傳訊息走廣播,會被限制。
如廣播被限制,需要將應用設為開機啟動項。所以對於及時性或到達率要求非常高的應用,我們建議應用要考慮替代方案。
非華為手機:
第三方手機(如:小公尺、oppo、三星等),由於rom的限制,需要將應用 設為開機啟動項。
華為推送還得區別 emui 的版本,這玩意也不是個小坑,雖然官方qq群公告說 emui 5.0 以後都可以收到訊息推送,但是不知道靠譜不靠譜
友盟推送的話,在測試階段,發現三星s7(android 7.0),三星s4(android 5.0),華為p8(android 6.0)無法獲取到 token,沒有 token ,那就推送不了了。
小公尺推送還可以,但是在三星 s4(android 5.0) 上無法接收到推送。
針對小公尺推送,在非小公尺裝置上會出現重啟以後無法獲得推送,因為是重啟以後,小公尺的 xmpushservice 沒有起來,目前採用的辦法是監聽手機啟動廣播,然後啟動小公尺的 xmpushservice。
Android整合華為推送
這個沒什麼好講的,照做就行了。之後就是在控制台建立應用巴拉巴拉的 需要注意的是sha256指紋 sha256你在控制台可以填好幾個,博主建議填兩個。乙個是debugkeystore的sha256 也就是你本機的sha256 另乙個是.jks簽名檔案裡面的sha256。allprojects depe...
android極光推送整合
一 註冊 極光推送帳號和建立應用 匯入jar包盒so庫到專案中 androidstudio 新增新資料夾jnilibs並將so匯入 jpushinte ce.setdebugmode true jpushinte ce.init this 三 啟動頁 override protected void ...
android整合極光推送
在專案中,我們一般會用到訊息推送功能,常見的有友盟推送,極光推送等,本文介紹的是如何整合極光推送。首先登入或者註冊極光帳號,進入極光推送介面,選擇建立應用,輸入應用名稱,上傳應用圖示。如圖 在推送設定中設定應用包名 在專案中整合極光推送,這裡採用自動整合方法,不過如果後期要整合極光im的話,最後採用...