首页 > 解决方案 > AWS 使用 React Native 放大推送通知

问题描述

关于如何实现推送通知,文档中似乎存在一些差异。这是来自AWS Amplify 文档的 RN 代码:

import { PushNotificationIOS } from 'react-native';
import Analytics from '@aws-amplify/analytics';
import PushNotification from '@aws-amplify/pushnotification';
import aws_exports from './aws_exports';

// PushNotification need to work with Analytics
Analytics.configure(aws_exports);

PushNotification.configure(aws_exports);

但我们还需要将 Analytics 配置为其中的一部分,以下是文档中的实现:

import Amplify, { Analytics } from 'aws-amplify';
import aws_exports from './aws-exports';

Amplify.configure(aws_exports);

请注意,在 Analytics 实施中,只有一个 Amplify configure。但是在推送通知文档中,我们直接configure AnalyticsPushNotifications不是Amplify. 它是哪一个?

为了进一步混淆,我发现这篇来自 AWS 开发倡导者的Medium 帖子以第三种方式解释了 RN 实施:

import { PushNotificationIOS } from 'react-native';
import Amplify from 'aws-amplify';
import { PushNotification } from 'aws-amplify-react-native';
import aws_exports from './aws_exports';

Amplify.configure(aws_exports);
PushNotification.configure(aws_exports);

PushNotificationaws-amplify-react-native是从而不是导入的aws-amplify

这里完全混淆了,欢迎任何澄清!

编辑:补充说我已经尝试了所有这些的各种组合,但没有运气。PushNotification似乎未定义且无法配置。

标签: amazon-web-servicesreact-nativeaws-amplify

解决方案


// 更新

更新了第一个代码片段,因为我用它为一个设备注册了 2 个端点。

// 旧答案

首先,以下步骤应该起作用:

import Amplify from 'aws-amplify;
import PushNotification from '@aws-amplify/pushnotification';
import awsExports from '../../../../../aws-exports';

Amplify.configure(awsExports);
// PushNotification.configure(awsExports); // registering 2 Endpoints for one device if running this line as well

然后,记得跑

npm install aws-amplify --save && npm install @aws-amplify/pushnotification --save

特别是带有@ 的第二部分很重要。

最后,在 componentDidMount 中:

PushNotification.onNotification((notification) => {
  console.log('in app notification', notification);
  notification.finish(PushNotificationIOS.FetchResult.NoData);
});

PushNotification.onRegister((token) => {
  console.log('in app registration', token);
});

这对我来说是最终的解决方案,与它战斗了 3 天。


推荐阅读