amazon-web-services - 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
Analytics
而PushNotifications
不是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);
PushNotification
aws-amplify-react-native
是从而不是导入的aws-amplify
。
这里完全混淆了,欢迎任何澄清!
编辑:补充说我已经尝试了所有这些的各种组合,但没有运气。PushNotification
似乎未定义且无法配置。
解决方案
// 更新
更新了第一个代码片段,因为我用它为一个设备注册了 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 天。
推荐阅读
- spring - 使用 Spring JMS 正常工作并遇到 Apache camel route 和 IBM MQ Route 问题
- c++ - 无法打开 curl/libcurl_a_debug.lib
- python-3.x - Sierpinski 的三角 Pygame 递归函数
- asp.net - 多页 Web 应用程序的会话固定问题
- jquery - 如何使用 ScrollX 正确调整 Jquery DataTables 的列:true?
- php - @Assert\NotBlank 验证在 symfony 4 中不能以嵌入式形式工作
- android - 为什么在分配了最大可能像素后,图像在 hdpi 屏幕[运行 android] 上显得模糊?
- solr - 自动建议器中的 Solr 服务器上下文过滤不起作用
- xcode - 无法在最新的 MacOS 测试版中登录 Xcode
- c# - 将 C# 转换为 VB.net 代码以使用 API