華為開發(fā)者聯(lián)盟
- 登錄華為開發(fā)者聯(lián)盟賬號疲陕,點擊Push服務(wù)
- 添加項目
- 開通推送服務(wù)
- 開通完成后荆隘,點擊我的項目静檬,如上圖
添加項目.png
,點擊剛才添加的項目次舌,進入項目詳情,點擊項目設(shè)置中的添加應(yīng)用,按照提示完成添加疙咸。
- 添加完成后,還是進入項目詳情-設(shè)置-常規(guī)风科,先獲取證書指紋
debug證書指紋獲取
Mac AndroidStudio Terminal 輸入如下命令:
keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android
獲取debug模式下的SHA256
release證書指紋獲取
Mac AndroidStudio Terminal 輸入如下命令:
keytool -list -v -keystore 簽名地址
把獲取到的證書指紋點擊+號進行添加(一定要點擊下對鉤確定才算添加完成)撒轮,添加完成后下載agconnect-services.json
文件
注意:更改了配置每次都要重新下載agconnect-services.json
文件
- 點擊我的應(yīng)用,找到剛才創(chuàng)建的應(yīng)用题山,找到APPID 以及 SecretKey兰粉。
極光推送
- 創(chuàng)建應(yīng)用
2.選擇推送服務(wù)
- 填寫App包名顶瞳,以及勾選配置廠商(此處以華為為例)后亲桦,最下方提示尚未配置,點擊進行配置
- 填寫配置信息(在華為聯(lián)盟獲取到的 id 以及 key 填寫上)浊仆,點擊保存后客峭,右上角會出現(xiàn)一個啟用的按鈕,點擊啟用抡柿。點擊下一步舔琅,完成配置。
項目配置
- json文件放到模塊的根目錄
- 根
build.gradle
添加HMS
相關(guān)
buildscript {
repositories {
...
// hms
maven { url 'http://developer.huawei.com/repo/'}
}
dependencies {
...
// hms
classpath 'com.huawei.agconnect:agcp:1.6.0.300'
}
}
allprojects {
repositories {
...
// hms
maven { url 'http://developer.huawei.com/repo/'}
}
}
- 在
module
的gradle
中添加依賴等
apply plugin: 'com.android.application'
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "wang"
...
ndk {
//選擇要添加的對應(yīng) cpu 類型的 .so 庫洲劣。
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
// 還可以添加 'x86', 'x86_64', 'mips', 'mips64'
}
manifestPlaceholders = [
JPUSH_PKGNAME : applicationId,
JPUSH_APPKEY : "2e524", //JPush 上注冊的包名對應(yīng)的 Appkey.
JPUSH_CHANNEL : "developer-default" //暫時填寫默認(rèn)值即可.
]
}
...
}
dependencies {
...
implementation 'cn.jiguang.sdk:jcore:3.1.0'
implementation 'cn.jiguang.sdk:jpush:4.4.5'
// 接入華為廠商
// 此要與jpush版本號保持一致
implementation 'cn.jiguang.sdk.plugin:huawei:4.4.5'
// 華為官網(wǎng)提供的最新push版本即可
implementation 'com.huawei.hms:push:6.1.0.300'
}
apply plugin: 'com.huawei.agconnect'
- 在
AndroidManifest
中配置一個Service
<!-- Since JCore2.0.0 Required SDK核心功能-->
<!-- 可配置android:process參數(shù)將Service放在其他進程中备蚓;android:enabled屬性不能是false -->
<!-- 這個是自定義Service,要繼承極光JCommonService囱稽,可以在更多手機平臺上使得推送通道保持的更穩(wěn)定 -->
<service android:name="xx.xx.XService"
android:enabled="true"
android:exported="false"
android:process=":pushcore">
<intent-filter>
<action android:name="cn.jiguang.user.service.action" />
</intent-filter>
</service>
- 在
AndroidManifest
中配置配置繼承JPushMessageReceiver
的廣播
<!-- Required since 3.0.7 -->
<!-- 新的 tag/alias 接口結(jié)果返回需要開發(fā)者配置一個自定的廣播 -->
<!-- 3.3.0開始所有事件將通過該類回調(diào) -->
<!-- 該廣播需要繼承 JPush 提供的 JPushMessageReceiver 類, 并如下新增一個 Intent-Filter -->
<!-- 最好定義 NOTIFICATION_OPENED 此action郊尝,接管點擊通知 -->
<receiver
android:name="自定義 Receiver"
android:enabled="true"
android:exported="false" >
<intent-filter>
<action android:name="cn.jpush.android.intent.RECEIVE_MESSAGE" />
<action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
<category android:name="您應(yīng)用的包名" />
</intent-filter>
</receiver>
- 初始化推送服務(wù)
public class ExampleApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
JPushInterface.setDebugMode(true);
JPushInterface.init(this);
}
}
- 驗證,運行后篩選一下token战惊,不為空基本華為通道成功
- 注意:點擊通知跳轉(zhuǎn)流昏,獲取附加字段,華為廠商不走極光receiver的回調(diào)
廠商通道在onCreate()
中獲取String json = getIntent().getData().toString();
極光通道在receiver
中的方法onNotifyMessageOpened()
獲取String json = notificationMessage.notificationExtras;
// 通過極光通道點開,獲取如下
{"key":"123"}
// 通過華為廠商通道吞获,獲取如下
{
"n_extras": {
"key": "123"
},
"n_title": "通知標(biāo)題",
"n_content": "通知內(nèi)容",
"msg_id": 2026642222222,
"show_type": 4,
"rom_type": 2,
"_j_data_": "{\"data_msgtype\":1,\"push_type\":4,\"is_vip\":0}"
}