文档中关于如何实施“推送通知”的内容似乎有些差异。以下是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
Analytics
和PushNotifications
而不是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
似乎是未定义的,无法配置。
答案 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天。