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

更多关于uni-app 离线打包集成谷歌推送遇到的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html

15 回复

离线打包参照文档

更多关于uni-app 离线打包集成谷歌推送遇到的问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html


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

回到顶部