uni-app 离线打包集成谷歌推送遇到的问题

发布于 1周前 作者 gougou168 来自 Uni-App

uni-app 离线打包集成谷歌推送遇到的问题

操作步骤:

  • 离线集成谷歌推送

预期结果:

  • 正常推送

实际结果:

  • 无法推送

bug描述:

  1. 可以收到在线推送,无法收到离线推送,后台查询没有Device Token
  2. 点击推送消息无法拉起APP
  3. 离线打包中谷歌推送与FCM的区别是否为谷歌推送是走unipush,FCM是需要自己服务器对接官推?
  4. 集成谷歌推送是否需要同时集成uniPush,现在无法同时集成有包重复冲突
信息类别 信息内容
产品分类 uniapp/App
PC开发环境 Windows
PC系统版本 windows10
HBuilderX类型 正式
HBuilderX版本 4.36
手机系统 Android
手机系统版本 Android 14
手机厂商 vivo
手机机型 所有机型可复现
页面类型 vue
vue版本 vue3
打包方式 离线
项目创建方式 HBuilderX

15 回复

离线打包参照文档


我要是能走通就不来问了,连三个推送的关系都没没讲清楚,自己试除了单接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离线打包集成谷歌推送时遇到的一些问题。

回到顶部