AWS使用React Native放大推送通知

时间:2018-07-26 16:31:12

标签: amazon-web-services react-native aws-amplify

文档中关于如何实施“推送通知”的内容似乎有些差异。以下是AWS Amplify docs中的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(分析)配置为其中的一部分,这是docs中的实现:

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

Amplify.configure(aws_exports);

请注意,在Google Analytics(分析)实施中,只有一个扩增configure。但是在推送通知文档中,我们直接configure AnalyticsPushNotifications而不是Amplify。是哪一个?

为了进一步混淆,我从一位AWS开发人员的拥护者那里发现this Medium post,用第三种方式解释了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);

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

这里完全感到困惑,欢迎您进行澄清!

编辑:补充一点,我尝试了所有这些的各种组合,但都没有碰运气。 PushNotification似乎是未定义的,无法配置。

1 个答案:

答案 0 :(得分:3)

//更新

更新了第一个代码段,因为我为一个设备注册了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天。