当我的应用程序在 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 中关闭时,如何发送通知? 的相关文章

  • Android Cordova 插件中的请求权限不会提示用户

    我正在尝试编写一个 Cordova 插件 以便为离子混合应用程序提供 Facebook 聊天头像浮动图标 这需要 SYSTEM ALERT WINDOW 权限 由于 Android M 及以上版本要求用户在应用程序第一次启动时授予权限 因此
  • Ionic/Cordova 更改 Android 导航栏颜色

    我正在尝试更改 Android 中导航栏的颜色 在底部 带有返回键和返回键 在没有硬件返回键和返回键的手机上 在我使用 Cordova 的 Ionic 应用程序中 有没有办法做到这一点 Example 发现了这个很棒的 cordova 插件
  • 如何将数据传回 Ionic 2 中的根页面?

    我有一个 Ionic 2 应用程序 该应用程序的前提是上课 一旦课程被打开 用户就会被标记为在远程 API 中学习该课程 数据流向为 用户打开 课程 选项卡 应用程序从 API 请求 类 数据 每个类别都拥有该用户的 状态 用户选择一个类别
  • 如何在 ionic 4 中提供警报控制器 css?

    我想在 ionic 4 中提供警报控制器样式 这些是我的演示代码 async presentalert const alert await this alertCtrl create header DO YOU WANT TO CANCEL
  • 如何获取 ion-checkbox 的值

    我使用以下代码显示我的复选框列表
  • 升级 cordova-android 10 后构建失败

    当我升级的时候 email protected cdn cgi l email protection to email protected cdn cgi l email protection我运行时遇到构建问题cordova build
  • 生产准备 Ionic 应用程序的任务

    我想弄清楚是什么best从代码传递到最终可部署 apk ipa 的过程 到目前为止 我有一个使用 Karma Jasmine 的测试套件 它将 TypeScript 转换为 JS 并运行一些单元测试 我通过 gulp 开始这个过程 之后我所
  • 深层链接不起作用 - 离子

    我正在使用 Deeplinks 和 ionic 3 但我创建的 url 不起作用 这是网址 https lucky com prd rm74fEgBB2frzhagYcov https lucky com prd rm74fEgBB2frz
  • 我可以自定义 UILocalNotification 重复间隔(即仅限工作日吗?)

    我希望能够安排 UILocalNotification 在每天的同一时间重复 但仅限于工作日 没有周六或周日 使用 UILocalNotification 的重复间隔功能是否可以实现这一点 或者是我创建某种处理时间和日期并计算出何时提前安排
  • 如何在 Ionic 中创建具有 + 和 - 按钮的输入框

    如何创建一个带有 和 按钮的输入框 单击哪个用户可以更改所选产品的数量 如下屏幕 这是 Ionic 2 的一个快速组合的示例 如果您使用 Ionic 1 您应该能够很容易地适应它 您只需要几个控制器 类函数来递增和递减 然后通过按钮调用它们
  • 无法获取 Ripple 会话信息

    我使用 Visual Studio 2015 RC 创建了一个 Ionic Apache Cordova 应用程序 我在自己的解决方案文件中创建了它 并且可以使用 Ripple 运行它 现在我想将文件移动到与服务器应用程序相同的文件夹中 因
  • Ionic框架和php mysql

    我是 Ionic Apahce Cordova 的新手 我创建了一个简单的应用程序 它具有静态列表视图项 但我想从 MYSQL 表获取数据并将其替换到我的静态列表中 我用谷歌搜索了一下 有人在研究它 但我不知道应该把我的 php 文件放在哪
  • `.gitignore` 用于具有 Android 目标的 Ionic 项目

    我正在使用 Capacitor 创建一个 Ionic 项目 编辑 与 Cordova 相比更新的推荐框架 并添加 Android 作为目标 我已经能够构建应用程序并添加 Android 目标 这会在android using ionic b
  • Ionic 3 更新后 WebpackJsonp 丢失

    我最近从 2 升级到 ionic 3 我可以为 iOS 构建应用程序 但 ionic 服务现在失败并出现以下错误 在为 iOS 构建之前 我必须手动将 main prod ts 和 main dev ts 替换为 main ts 您需要更多
  • FileReader 在 Ionic 2 中未触发 onloadend

    我正在尝试使用 cordova file plugin 读取本地文件 目前我可以读取本地目录的内容并选择单个文件 但我在获取文件内容时遇到问题 这是我的函数 从列表中选择文件后单击按钮即可调用该函数 import window resolv
  • 如何向离子推送通知添加操作按钮?

    我想向离子推送通知添加一些操作按钮 我正在使用科尔多瓦pushv5 通知工作正常 但我不知道如何添加这些按钮 如何添加这些按钮 应在 POST 请求中添加操作按钮 registration ids my device id data tit
  • 角度 4 单击按钮功能未触发

    我正在尝试检查文本输入是否为空或不在角度 4 中 我没有为此使用表单 这只是一个输入字段 当我在下面的按钮中执行 addLocaton 函数时 需要进行检查 我的输入字段
  • Ionic 4 Loadingcontroller 覆盖不存在

    我创建了一个简单的函数来创建这样的加载 async presentLoading const loading await this loadingController create message Please Wait await loa
  • 有没有办法通过 WiFi 部署/调试 Cordova Android Ionic 应用程序? [关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 这是一个双胞胎this https stackoverflow com questions 46596236 is there a w
  • 如何知道在Angular JS中选择了哪个元素

    我制作了多个选定的弹出窗口 用户可以在其中选择多个值 我想在屏幕上打印所有选定的值或获取一个对象 其中包含用户选择的所有元素 我将换句话说 在我的演示中 我在屏幕上有一个按钮 单击按钮时 我会打开一个弹出窗口 其中有多个选定的元素我想获取用

随机推荐

  • 在 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