uni-app 离线打包集成谷歌推送遇到的问题
uni-app 离线打包集成谷歌推送遇到的问题
操作步骤:
- 离线集成谷歌推送
预期结果:
- 正常推送
实际结果:
- 无法推送
bug描述:
- 可以收到在线推送,无法收到离线推送,后台查询没有Device Token
- 点击推送消息无法拉起APP
- 离线打包中谷歌推送与FCM的区别是否为谷歌推送是走unipush,FCM是需要自己服务器对接官推?
- 集成谷歌推送是否需要同时集成uniPush,现在无法同时集成有包重复冲突
信息类别 | 信息内容 |
---|---|
产品分类 | uniapp/App |
PC开发环境 | Windows |
PC系统版本 | windows10 |
HBuilderX类型 | 正式 |
HBuilderX版本 | 4.36 |
手机系统 | Android |
手机系统版本 | Android 14 |
手机厂商 | vivo |
手机机型 | 所有机型可复现 |
页面类型 | vue |
vue版本 | vue3 |
打包方式 | 离线 |
项目创建方式 | HBuilderX |
离线打包参照文档
我要是能走通就不来问了,连三个推送的关系都没没讲清楚,自己试除了单接unipush都不成功
回复 小新的狗叫小白: 你仔细看文档,有对应说明。
回复 DCloud_Android_THB: 我敢说我看了不下十遍,智商有限
回复 DCloud_Android_THB: 首先集成google推送要不要集成implementation(‘com.getui:gtsdk:3.3.7.0’){ exclude(group: ‘com.getui’) } //个推SDK implementation ‘com.getui:gtc-dcloud:3.2.16.7’ //个推核心组件这两个库
回复 DCloud_Android_THB: 回复 小新的狗叫小白: 集成的话就会跟sdk-for-gj-4.4.3.13有冲突,不导入的话离线推送就收不到获取不到Device Token
回复 小新的狗叫小白: 谷歌推送 需要将以下jar/aar文件放到工程的libs目录下
路径 文件 SDK\libs aps-release.aar, aps-unipush-gp-release.aar, sdk-for-gj-4.4.3.1.aar, aps-igexin-fcm-release.aar ,fcm-3.1.1.aar 注意:要想使用谷歌推送必须使用aps-unipush-gp-release.aar
你要想集成谷歌推送,就不需要看unipush段落,从名字是你也看出来aps-unipush-gp-release.aar多了个gp的后缀,参照这个段落的配置即可。
回复 DCloud_Android_THB: 离线打包在线推送点击消息不能唤起后台存活的APP,在线云打包可以,以前在线云打包也不行后面升级了个推SDK可以的,离线打包的个推SDK是不是没有升级?
回复 小新的狗叫小白: 离线包会在发版后两三天同步更新,你关注一下最新离线sdk相关aar的版本。
回复 DCloud_Android_THB:
我是按照官方文档一点一点配置的 但是显示 打包时未添加push模块,请参 考https://ask.dcloud.net.cn /article/283
是还有其他的配置吗
在处理uni-app离线打包集成谷歌推送(Google Cloud Messaging, GCM 或 Firebase Cloud Messaging, FCM)时,你可能会遇到一些常见的问题。以下是一些可能的解决方案,以代码和配置为主,帮助你更好地集成GCM/FCM推送服务。
1. 配置Firebase项目
首先,确保你已经在Firebase控制台创建了一个项目,并下载了google-services.json
文件。将此文件放置在uni-app项目的根目录或指定的Android原生项目目录下。
2. 修改Android原生项目配置
在AndroidManifest.xml
中,添加必要的权限和服务声明:
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"/>
<application>
<!-- 其他配置 -->
<service
android:name=".MyFirebaseMessagingService"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
</application>
3. 创建Firebase Messaging Service
在Android原生项目中创建一个类MyFirebaseMessagingService
,继承FirebaseMessagingService
:
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// 处理接收到的消息
String from = remoteMessage.getFrom();
// TODO: 根据消息内容执行相应操作
}
}
4. 配置build.gradle
在Android项目的build.gradle
文件中,确保应用了Google服务插件:
buildscript {
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.google.gms:google-services:4.3.10' // 检查最新版本
}
}
allprojects {
repositories {
google()
jcenter()
}
}
在app模块的build.gradle
文件末尾添加:
apply plugin: 'com.google.gms.google-services'
5. 发送推送通知
在uni-app中,你可以通过调用Firebase API或使用其他推送服务插件来发送推送通知。以下是一个简单的示例,展示如何在JavaScript中发送推送通知(假设你已经有了一个可用的推送令牌):
const admin = require('firebase-admin');
admin.initializeApp({
credential: admin.credential.cert(serviceAccount), // 加载服务账户密钥
databaseURL: "https://<your-database-name>.firebaseio.com"
});
const registrationToken = "your-device-token";
const payload = {
notification: {
title: "Hello",
body: "World"
}
};
admin.messaging().sendToDevice(registrationToken, payload)
.then((response) => {
console.log('Successfully sent message:', response);
})
.catch((error) => {
console.log('Error sending message:', error);
});
确保替换上述代码中的占位符为实际值。以上步骤和代码示例应能帮助你解决uni-app离线打包集成谷歌推送时遇到的一些问题。