当我的应用程序在 Ionic 中关闭时,如何发送通知?

2024-01-23

我正在使用 Ionic 进行移动开发,我实际上正在使用本地通知 https://ionicframework.com/docs/native/local-notifications

每 5 分钟我会检查我的服务器是否有新问题:

this.checkQuestions();
this.IntervalId = setInterval(() => {
  this.checkQuestions();
}, 300000);

我的功能checkQuestions() make a for()与我的服务器的数据:

  for (var i = 0; i < res.data.notificar.questions.length; i++) {
    this.localNotifications.schedule({
      id: i, 
      priority: 2,
      text: 'Produto: ' + res.data.notificar.questions[i].produto.substring(0, 20) + '...',
      title: 'Nova pergunta, conta: ' + res.data.notificar.questions[i].conta,
      smallIcon: 'res://notification',
      foreground: true,
    });
  }

问题是当我的应用程序关闭时,此逻辑不会运行,我的客户不会收到通知。 Ionic 中有一些替代方案可以在我的应用程序关闭时发送通知吗?

即使应用程序已关闭,我也需要每 5 分钟检查一次服务器。


如果您的用户终止了该应用程序,您将无法确保您的用户保持您的应用程序处于活动状态。但如果你真的想尝试你可以使用this https://ionicframework.com/docs/native/background-mode/.

最有效的是使用推送通知 https://devdactic.com/ionic-push-notifications-guide/。当存储新数据时,您的服务器可以向您的应用程序发送通知。

EDIT

服务器端您可以运行一个函数来发送推送通知,如下所示:

function sendGCM($message, $id) {


    $url = 'https://fcm.googleapis.com/fcm/send';

    $fields = array (
            'registration_ids' => array (
                    $id
            ),
            'data' => array (
                    "message" => $message
            )
    );
    $fields = json_encode ( $fields );

    $headers = array (
            'Authorization: key=' . "YOUR_KEY_HERE",
            'Content-Type: application/json'
    );

    $ch = curl_init ();
    curl_setopt ( $ch, CURLOPT_URL, $url );
    curl_setopt ( $ch, CURLOPT_POST, true );
    curl_setopt ( $ch, CURLOPT_HTTPHEADER, $headers );
    curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, true );
    curl_setopt ( $ch, CURLOPT_POSTFIELDS, $fields );

    $result = curl_exec ( $ch );
    echo $result;
    curl_close ( $ch );
}

?>

如果您愿意,可以在 php 中每 5 分钟运行一次此函数,但在存储新数据时效果更好。

SOURCE https://stackoverflow.com/questions/37371990/how-can-i-send-a-firebase-cloud-messaging-notification-without-use-the-firebase

而且,Ionic 方面,您可以在捕获推送通知时执行一个函数来获取数据。有点像这样:

import { Component } from '@angular/core';
import { Platform } from 'ionic-angular';
import { StatusBar, Splashscreen } from 'ionic-native';

import { HomePage } from '../pages/home/home';
import {
  Push,
  PushToken
} from '@ionic/cloud-angular';

@Component({
  templateUrl: 'app.html'
})
export class MyApp {
  rootPage = HomePage;

  constructor(platform: Platform, public push: Push) {
    platform.ready().then(() => {
      StatusBar.styleDefault();
      Splashscreen.hide();

      this.push.register().then((t: PushToken) => {
        return this.push.saveToken(t);
      }).then((t: PushToken) => {
        console.log('Token saved:', t.token);
      });

      this.push.rx.notification()
      .subscribe((msg) => {
        // CALL SERVE TO GET DATA
      });
    });
  }
}

SOURCE https://devdactic.com/ionic-2-push-notifications/

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当我的应用程序在 Ionic 中关闭时,如何发送通知? 的相关文章

  • 有没有办法让 ion-segment 在 iOS 和 Android 上看起来一样?

    设置ion segment模式后 在ionic lab中渲染后看起来还是不一样 我尝试将离子段和离子工具栏的模式设置为 md 但它们看起来仍然不同 https ibb co HV75Ly2 https ibb co HV75Ly2这是设置模
  • Ionic 3 更新后 WebpackJsonp 丢失

    我最近从 2 升级到 ionic 3 我可以为 iOS 构建应用程序 但 ionic 服务现在失败并出现以下错误 在为 iOS 构建之前 我必须手动将 main prod ts 和 main dev ts 替换为 main ts 您需要更多
  • 当我在控制器中使用 state.go 时,离子滑动菜单不会出现

    大家好 我正在使用 ionic 来构建我的应用程序 并且我放置了幻灯片菜单 问题是当我使用 stage go 更改视图时 此工作正常 但幻灯片菜单失败 那么我该如何解决这个问题 路由器 use strict var app angular
  • 在 ios 版 Ionic 中接收 URL

    我正在使用离子框架 我正在尝试设置一种从另一个应用程序接收网址的方法 就像 您在浏览器中 单击共享 然后将链接发送到另一个应用程序 我的应用程序 我找到了这个cordova https stackoverflow com questions
  • 模块“””在 ionic 3 Geolocation 中没有导出成员“NativeGeocoderReverseResult”

    模块 没有导出成员 NativeGeocoderReverseResult L13 从 ionic native geolocation ngx 导入 Geolocation L14 导入 NativeGeocoder NativeGeoc
  • 为范围旋钮 ionic-range 添加边框颜色

    我正在使用离子范围添加范围滑块 并想向范围旋钮添加边框 由于它的 ionic4 和范围旋钮是 Shadow dom 的一部分 我无法使用范围旋钮的 border 属性直接更改边框 我已附上我想要实现的图像 范围旋钮周围有白色边框 现有属性只
  • 为什么 Ionic 5 内容填充不起作用?

    升级到 Ionic 5 后 padding 属性不再像 Ionic 4 中那样起作用
  • 使用自定义 cordova 插件未找到类异常

    我正在开发一个打印应用程序 它使用自定义 API 通过 USB 访问打印机 因此我需要一个自定义 Cordova 插件 我开始开发它 这是一个非常好的挑战 但目前也非常令人沮丧 因为我不明白为什么我的插件不能正确使用 事情是 1 插件安装正
  • Ionic 3,videojs-panorama 在 Android 中不支持,出现错误 DOMException: 无法执行 'texImage2D'

    我在使用时收到此错误 视频全景 Dom 异常 无法在 WebGLRenderingContext 上执行 texImage2D 视频元素包含跨源数据 可能无法加载 https github com yanwsh videojs panora
  • Firebase 如何取消订阅

    我在用Ionic2 with Angularfire2访问Firebase Authentication 我访问以下内容rxjs Observable chats ts this firelist this dataService find
  • 具有 Universal 和 Ionic 的 Angular SSR 不会在页面源中显示实际数据

    我有一个 nguniversal 的 Angular 11 项目 我的主页正在从内部 翻译键对象 和外部 用于显示链接列表的快速节点服务器 服务获取数据 后端域与前端域地址不同 该网站显示正确 但由于某种原因 当我检查该网站时 最初未加载翻
  • 滑动浏览段选项卡 - Ionic 3

    下面的代码使用 ionic 3 中的片段 文档显示了 ngSwitch ngModel 的使用 但我想简单地在该段上滑动并切换到另一个段选项卡 我怎样才能实现这个目标 我对滑动顶部的选项卡不感兴趣 但通过滑动内容我想更改分段选项卡
  • 无法在 Android 上运行 Ionic:未找到类异常 IonicKeyboard

    构建并运行 Android 应用程序后 它会关闭 查看 Eclipse logcat 它显示类未找到异常 com ionic keyboard IonicKeyboard 我是 Ionic 的新手 我不知道如何让它工作 提前致谢 我也有同样
  • 如何在 ionic 5 中将相机图像转换为 blob?

    我想发布多部分表单数据 为此 我们可以这样做 let formData new FormData formData append myfile your blob this http post url formData 但我不知道如何将相机
  • 将 Cordova console.log 写入文件

    有谁知道是否有可能console log写入文件或类似的东西 我已经记录了我的应用程序 但它仅写在控制台上 出于远程目的debugging我也需要将现有日志写入文件 我想创建一个文件并将日志写入该文件中 但这将使我复制现有的日志代码 因此
  • Android studio SDK 管理器丢失

    我正在关注这个离子教程 https ionicacademy com get started with ionic 在 Android Studio 中设置 SDK 来测试我的 ionic 项目时遇到了一些问题 我正在寻找 SDK 管理器
  • 设置应用程序默认的iOS本地通知样式

    从 iOS 5 开始 有两种通知样式 横幅和警报 旧 样式 用户可以在设置中为每个应用程序设置使用哪种样式 但是 现在默认情况似乎是通知以横幅样式显示 我使用本地通知来提醒 现在 将发生的事件 横幅出现后不久就会消失 而且还不够明显 人们可
  • 使用 Phaser.js 和 Ionic 开发游戏应用程序(渲染缓慢/不稳定)

    只是为了让您知道 以防有人想要开发 我使用 Phaser js 开发了一个游戏应用程序 我将代码放入 Ionic 空白启动应用程序中 所以基本上视图是使用 Ionic 应用程序渲染的 然后 Phaser 通过 id 选取 div 并显示游戏
  • 水平离子涡旋不工作

    在我正在制作的项目中 我使用了离子滚动两次并且工作完美 垂直模式 但现在我尝试进行水平滚动并且不起作用 滚动出现但我无法滚动任何内容 HTML 代码很简单
  • AngularJs 数据绑定不适用于 ionic

    我觉得我在离子输入文本中遗漏了一些明显的东西 我在用angular ui router这条路线 stateProvider state findPersons url findPersons templateUrl html findPer

随机推荐

  • 在 C++ 中找到一对椭圆的公切线的首选方法[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想用 C 来做这个 我有两个想法可以做到这一点 将这对椭圆视为两个不同参数的参数方程 我可以根据这两个参数得到两个方程 这对方程是非
  • 如果没有const引用临时对象会被删除吗?

    我们来看看这两个函数 std string get string std string ret value Calculate ret value return ret value void process c string const c
  • 广播有延迟

    我们使用广播来传达远程服务和 UI 之间的状态更改 这样做时 我们发现了一个非常奇怪的行为 有时 我找不到任何线索为什么 这些广播会延迟 8 秒左右 我们如何发送它们 非常基本 mState只是一个枚举 服务中的远程进程 Intent in
  • D3 反转色标图以获得幅度

    我有一个 colorscaleMap 让我们假设这样的事情 d3 scale linear domain 0 01 0 02 0 03 0 04 0 05 range 5100ff 00f1ff 00ff30 fcff00 ff0000 现
  • 将文件存储在批处理文件中?

    您好 我正在尝试将二进制文件存储在我编写的基本批处理脚本中 基本上我希望脚本能够在某个时候输出这个预构建的文件 而不是从头开始创建它 如果这是不可能的 那么我必须将此文件与批处理文件分开包含 然后将其移动到必要的位置 但我宁愿让此文件对用户
  • 我可以从 node.js 设置 ulimit 吗?

    我想限制子进程写入太多数据或占用太多CPU时间 无限循环 在 C 中 我会调用 setrlimit 2 来做到这一点 Node js中有类似的东西吗 据我所知 没有node js扩展提供setrlimit 功能 但您可以通过一个小的 she
  • PHP 准备好的语句返回 -1

    我使用准备好的语句已经有一段时间了 从来没有遇到过任何问题 现在我正在尝试 sql SELECT PhotoID Caption FROM Photos WHERE EntityID AND TypeID LIMIT iDB new mys
  • 在 Perl 中使用 foreach 或 while 迭代文件有什么区别?

    我有一个文件句柄FILE在 Perl 中 我想迭代文件中的所有行 以下有区别吗 while
  • C、如何结合使用fgets和fscanf

    我有一份大学作业 即使用文件IO 有这样的TXT文件 Brian s213551 50 70 70 50 Alex Fernandes s210011 70 81 50 89 Young Lee s211213 60 80 60 90 an
  • 如何在 MySQL 中调用过程?

    我已经开始检查 MySQL 中的过程 但我所有的努力都不起作用 这是我的程序创建 DELIMITER CREATE PROCEDURE test IN a INT BEGIN SELECT FROM table WHERE id a END
  • KBUILD_DEFCONFIG_KMACHINE ?= defconfig_file 无法按预期工作

    KBUILD DEFCONFIG KMACHINE defconfig file没有按我的预期工作 我学到的第一课 defconfig config Bare Kernel Build 没有 yocto 下面是一个新的 defconfig
  • 在 Python 中调试期间绘制函数

    我曾经在 Matlab 中工作 在调试过程中使用可视化中间结果非常方便 当使用大数组 矩阵和嵌套函数时 plot功能 在Python中 我无法在调试模式下绘制任何内容 带有图形图的窗口永远不会加载 我正在使用Spyder IDE进行编码和m
  • 在 Google 地图的不同图层上显示标记集

    我需要在 Google 地图上显示一组标记 我知道可以直接在 Google 地图上添加标记 但鉴于我有 3 组标记 一组用于商店 一组用于公园 另一组用于酒店 我如何在 3 个不同的图层上显示它们 以便稍后使用 javascript 我可以
  • GRPC 异步响应流 C#

    如何从处理程序外部生成 RPC 的流响应值 具体来说 来自 IObservable 我目前正在执行以下操作 但这会产生跨线程问题 因为AnRxObservable在 RPC 处理程序之间共享 public override Task Get
  • 计算列中唯一值的每个实例

    假设你有一个 SQL 表格 Prices 13 99 14 00 52 00 52 00 52 00 13 99 您如何计算输入不同字段的次数 因此 此类计数的示例将输出 13 99 2 times 14 00 1 times 52 00
  • 在后台运行 Webrick 服务器?

    MBPro shovell myname ruby script server gt Booting WEBrick gt Rails 2 3 8 application starting on http 0 0 0 0 3000 gt C
  • tidytext::unnest_tokens 是否适用于西班牙语字符?

    我正在尝试将 unnest tokens 与西班牙语文本一起使用 它适用于一元语法 但会破坏二元语法中的特殊字符 该代码在 Linux 上运行良好 我添加了一些有关区域设置的信息 library tidytext library dplyr
  • Mono - 通过 SSL 的 HttpWebRequest - 写入标头时出错

    下面抛出一个 System Net WebException Error SendFailure Errorwriting headers over SSL 但工作正常http www google com http www google
  • 加速Python中的双循环

    有没有一种方法可以加快双循环的速度 从而更新上一次迭代的值 In code def calc N m x 1 0 y 2 0 container np zeros N 2 for i in range N for j in range m
  • 当我的应用程序在 Ionic 中关闭时,如何发送通知?

    我正在使用 Ionic 进行移动开发 我实际上正在使用本地通知 https ionicframework com docs native local notifications 每 5 分钟我会检查我的服务器是否有新问题 this chec