gpt4 book ai didi

ios - 通过推送通知检测是否打开了 React Native iOS 应用程序

转载 作者:IT王子 更新时间:2023-10-29 08:22:05 56 4
gpt4 key购买 nike

Detect if the app was launched/opened from a push notification描述了如何通过用户点击推送通知来检测 native iOS 应用程序是否已打开(即启动或仅激活)。

如何在 React Native 中做同样的事情? PushNotificationIOS让我附加一个通知监听器...

PushNotificationIOS.addEventListener('notification', function (notification) {
console.log('got a notification', notification);
});

但是当应用程序在前台收到推送通知时,当我通过推送通知打开应用程序时,这都会触发。

我怎样才能特别检测到第二种情况?

最佳答案

这里有两种情况需要用不同的方式检测:

  1. 该应用已完全终止(例如,通过重启手机,或双击主屏幕并将其从后台运行的应用列表中滑出),并且正在通过用户点击启动在推送通知上。这可以通过 React.PushNotificationIOS.getInitialNotification 检测到(并获取通知的数据)方法。
  2. 该应用程序已被暂停,并且正在通过用户点击推送通知再次激活。就like in a native app ,您可以看出发生这种情况是因为 iOS 在打开时将点击的通知传递给您的应用程序(即使它是旧通知)并导致您的通知处理程序在您的应用程序处于 UIApplicationStateInactive 状态时触发(或 'background' 状态,如 React Native 的 AppStateIOS 类所称)。

处理这两种情况的代码(您可以将它放在您的 index.ios.js 或在应用启动时运行的其他地方):

import React from 'react';
import { PushNotificationIOS, AppState } from 'react-native';

function appOpenedByNotificationTap(notification) {
// This is your handler. The tapped notification gets passed in here.
// Do whatever you like with it.
console.log(notification);
}

PushNotificationIOS.getInitialNotification().then(function (notification) {
if (notification != null) {
appOpenedByNotificationTap(notification);
}
});

let backgroundNotification;

PushNotificationIOS.addEventListener('notification', function (notification) {
if (AppState.currentState === 'background') {
backgroundNotification = notification;
}
});

AppState.addEventListener('change', function (new_state) {
if (new_state === 'active' && backgroundNotification != null) {
appOpenedByNotificationTap(backgroundNotification);
backgroundNotification = null;
}
});

关于ios - 通过推送通知检测是否打开了 React Native iOS 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34337117/

56 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com