Android 推送整合華為,小公尺,友盟

2021-09-07 09:50:31 字數 3981 閱讀 5879

按照整合的難易程度排序

接入步驟接入步驟

在 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的話,最後採用...