房管局網(wǎng)站建設(shè)方案泉州seo按天計費
Dcloud
Dcloud注冊賬號
個推
了解即可
注冊個推賬號
ios配置流程
需配置含有推送的描述文件以及p8證書
配置推送證書
ios證書配置報技術(shù)錯誤(參數(shù)錯誤)
TeamID-蘋果開發(fā)者賬號唯一的ID
安卓需配置多廠商
小米手機需要配置小米廠商
華為手機則需要配置華為廠商
Google FCM則需要海外手機才能測試,國內(nèi)安卓無法測試,無法獲取device-token
故障排查
uniapp廠商配置文檔
了解即可
個推廠商配置文檔
測試推送
注意:此推送僅在app離線狀態(tài)顯示
通知消息
uni.onPushMessage無法獲取消息內(nèi)容
原因:由于 ios 系統(tǒng)的限制,ios app 在線時,只能推送透傳消息。
透傳消息
uni.onPushMessage能獲取消息內(nèi)容
了解即可
推送成功展示
如何實現(xiàn)在線推送
在App.vue文件添加以下代碼
uni.onPushMessage((res) => {// 監(jiān)聽通知欄消息的點擊 if (res.type == 'click') {// 如果需要跳轉(zhuǎn)app內(nèi)指定頁面,則自己實現(xiàn)下方的跳轉(zhuǎn)代碼。 // uni.navigateTo({// //頁面路徑示例值:/pages/pushinfo/pushinfo // url: '指定頁面路徑'// })}// 監(jiān)聽在線推送消息,若云函數(shù)設(shè)置了 "force_notification":true,則不會觸發(fā)此 receive。 if (res.type == 'receive') {console.log("接收到的消息內(nèi)容", res.data);// if (res.data.content) { // 透傳、云函數(shù)才會拿到內(nèi)容// uni.createPushMessage({// content: res.data.content// })// }}})// 獲取ciduni.getPushClientId({success(res) {},fail(err) {}})
push原生文檔
問題集合
發(fā)行打包時,勾選GooglePlay渠道,安卓會打包成aab格式,上架Google Play 商店需要此安裝包格式。
安卓手機不能直接安卓aab格式的安裝包,需從Google Play 商店進行下載(Google Play 商店會根據(jù)用戶設(shè)備篩選出合適apk供用戶下載)
開發(fā)測試:可以通過bundletool工具進行aab裝換成apk進行測試安裝。
利用bundletool將aab格式轉(zhuǎn)換成apks
bundletool將aab格式轉(zhuǎn)換成apks原地址
注意bundletool-all-1.17.1.jar,此jar包jdk8版本會失敗,使用jdk17版本即可
java -jar <bundletool.jar的路徑> build-apks --bundle=<.aab文件的路徑> --output=<輸出.apks的路徑> --ks=<打包使用的證書文件的路徑> --ks-pass=pass:<證書密碼> --ks-key-alias=<證書別名> --key-pass=pass:<證書別名密碼,通常與證書密碼一致>// 例子
java -jar D:\...\bundletool-all-1.17.1.jar build-apks --bundle=D:\...\myApp.aab --output=D:\...\myApp.apks --ks=D:\...\myKey.keystore --ks-pass=pass:123456 --ks-key-alias=myKey_gci --key-pass=pass:123456
輸出的myApp.apks將后綴apks修改成zip,在進行壓縮包解壓,解壓會看到以下目錄
點開splits或者standalones目錄會看到一堆apk文件,根據(jù)手機配置進行選擇即可(不建議,并不通用)
指定配置文件輸出apk
使用 extract-apks 命令從現(xiàn)有的 APK 集合中提取指定設(shè)備配置的 APK 子集
java -jar D:\...\bundletool-all-1.17.1.jar extract-apks --apks=D:\...\xxx.apks --device-spec=D:\...\device_config.json --output-dir=D:\...\apk-list
device_config.json
{"supportedAbis": ["arm64-v8a", "armeabi-v7a"],"supportedLocales": ["zh-Hans"],"screenDensity": 480,"sdkVersion": 31}
連接usb,針對設(shè)備生成專用的json文件
java -jar D:\...\bundletool-all-1.17.1.jar get-device-spec --output=D:\...\device_config.json
設(shè)備規(guī)范 JSON 文件
{"supportedAbis": ["arm64-v8a", "armeabi-v7a", "armeabi"], // CPU 架構(gòu)類型"supportedLocales": ["zh-CN"], // 指定了應(yīng)用支持語言// "deviceFeatures": [], // 設(shè)備支持的各種硬件或系統(tǒng)特性。這些特性可以包括觸摸屏、GPS、攝像頭、傳感器等多種硬件功能// "glExtensions": [], // OpenGL 擴展"screenDensity": 440, // 設(shè)備屏幕的像素密度"sdkVersion": 34, // 指定設(shè)備運行sdk版本"sdkRuntime": {"supported": true // 用戶在安裝應(yīng)用時,只有主模塊會被下載,而其他特性模塊則可以根據(jù)需要在后續(xù)時間動態(tài)下載}//...
}
屏幕的像素密度
根據(jù)設(shè)備的屏幕密度選擇合適的資源,例如圖像和字體文件,以確保應(yīng)用在該設(shè)備上的顯示效果最佳。
- ldpi (low) - 120 dpi
- mdpi (medium) - 160 dpi
- hdpi (high) - 240 dpi
- xhdpi (extra-high) - 320 dpi
- xxhdpi (extra-extra-high) - 480 dpi
- xxxhdpi (extra-extra-extra-high) - 640 dpi
題外話:什么是apks?
APKS 文件中的每個單獨的 APK 文件都是根據(jù)設(shè)備的各個方面生成的。這些包括架構(gòu)、語言、屏幕密度和其他設(shè)備功能。
當 Android App Bundle (AAB) 準備就緒時,可以測試其在 Google Play 商店中的行為以部署到設(shè)備。為此,可以從 AAB 文件生成 APKS 文件,并使用 Google 的 Android bundletool 將其安裝在測試設(shè)備上。
standalone-arm64_v8a_hdpi.apk
解
standalone
CPU類型 : arm64_v8a or armeabi_v7a
Android設(shè)備上不同屏幕密度的分類 : hdpi、ldpi、mdpi、tvdpi、xhdpi、xxhdpi、xxxhdpi
Android Debug Bridge (ADB)工具使用
是連接Android手機與PC端的橋梁
下載地址
下載后解壓,找到adb.exe的目錄位置,配置環(huán)境變量即可
查看版本
adb version
安裝完成!
adb常用命令
adb devices #查看當前連接的設(shè)備,已連接的設(shè)備會顯示出來
adb get-serialno #也可以查看設(shè)備號
adb root
adb -s <設(shè)備號> shell #指定一個設(shè)備號進行連接 exit #退出
adb install
adn uninstall
疑點:
fcm需要安卓手機內(nèi)置谷歌服務(wù),并開啟,國內(nèi)安卓大部分不會內(nèi)置谷歌服務(wù),所以無法推送成功(因為被墻了)
uni-push 2.0 快速接入指南
uni-push2.0 常見問題
FCM