反应本机推送通知

使用Amazon Pinpoint,AWS Amplify和AWS Mobile Hub将推送通知添加到React Native iOS项目中。

AWS最近增加了将推送通知发送到AWS Amplify库的功能,从而可以与适用于iOS和Android平台的Amazon Pinpoint推送通知服务集成。

这增加了Amplify支持的现有服务,该服务现在还包括使用Amazon Cognito进行授权,使用Amazon S3进行存储以及使用Amazon Pinpoint进行分析。

在本文中,我们将逐步介绍如何向React Native iOS项目添加推送通知。

我们将不介绍Android,它将在另一篇文章中介绍,因为这两个平台是如此不同,并且具有完全不同的配置和工作流程。

要查看完整的端到端实施,包括配置Apple证书和配置文件,请参阅以下视频。

现在,您会注意到项目中添加了几个新文件和文件夹: ./aws-exports.js./awsmobilejs./awsmobilejs

在通过CLI创建Mobile Hub项目之后,应在终端中向您介绍./awsmobilejs的内容:

./aws-exports.js包含与AWS Amplify支持的任何AWS服务进行交互所需的配置。 我们在调用Amplify.configure(config)时使用此文件来配置应用程序,其中config是此配置。

接下来,我们需要在AWS Amplify React Native项目中链接本机依赖关系:

 反应本机链接aws放大反应本机 

苹果开发人员配置

接下来,我们需要在开发人员控制台中设置iOS推送通知,创建配置文件,并从Keychain Access生成并下载.p12文件。

执行此操作的步骤位于此处。 如果您以前从未做过,那么这是一个复杂的过程,我会在这里指出您之前引用的视频,并从4:42到12:30观看整个过程。

将.p12文件添加到Amazon Pinpoint

现在我们已经配置了Apple证书,我们需要通过Mobile Hub将.p12文件上传到Amazon Pinpoint。

让我们从控制台在Mobile Hub中打开项目:

  awsmobile控制台 

这将在AWS控制台中打开当前的AWS Mobile Hub项目。

向下滚动并单击Messaging&Analytics ,然后选择Messaging

现在,选择Mobile Push ,然后选择iOS ,然后上传从钥匙串导出的.p12证书:

配置Xcode

现在,我们需要更新Xcode项目以添加PushNotificationIOS库以及配置一些设置。

添加PushNotificationIOS

我们要做的第一件事是将PushNotificationIOS Xcode项目添加到Libraries文件夹中。 PushNotificationIOS库位于node_modules中的react-native文件夹中,位于react-native/Libraries/PushNotifications

如果您不熟悉此操作,请查看以下gif:

管理代码签名

接下来,我们将需要管理Xcode签名。 首先单击RNPushTest项目,然后取消选中自动管理签名 ,然后添加您在Apple Developer帐户中创建的配置文件。 您还需要更新RNPushTestTests项目以取消选中“ 自动管理签名” ,设置团队并将“ 签名证书”设置为iOS发行版。

要查看有关如何设置代码签名的演练,请在此处12:41观看YouTube视频。

添加推送通知功能

接下来,我们需要在Xcode项目中启用“ 推送通知远程通知后台模式 ”。

如果您不熟悉此操作,请查看以下gif:

更新AppDelegate.m

现在,我们需要添加代码以将iOS Push Notification库集成到我们的AppDelegate文件中。

在导入中,添加以下导入:

您可以将所有内容保留在此屏幕中,然后单击“下一步”

在下一个屏幕中,将通知类型设置为标准通知 ,为消息指定标题和正文,然后将操作保留为在应用程序中打开 ,然后单击下一步

通过单击立即 ,然后单击下一步 ,然后在下一个屏幕中单击启动活动 ,将通知安排为立即发送出去。

而已。 如果一切均已配置且正常运行,则应在应用程序中收到推送通知。

您还可以通过选择左侧的“ 直接”选项卡,并使用在componentDidMount中的onRegister方法中注销的设备令牌,来测试仅向Amazon Pinpoint中的设备发送的直接消息。

您还可以使用Amazon Pinpoint rest API以编程方式发送推送通知。 在此处查看有关文档。

如果您在设置时遇到任何问题,请查看此视频,AWS Amplify的GitHub存储库以及文档。

我叫Nader Dabit。 我是AWS Mobile的开发者倡导者,负责AppSync和AWS Amplify等项目,也是React Native Training的创始人。

目前,我专门研究带有AWS AppSync的GraphQL以及JavaScript应用程序的身份验证和授权,因此,如果您对此感兴趣,可以关注我,以获取更多将来的信息和教程!

如果您喜欢这篇文章, 请拍拍n次并分享! 谢谢你的时间。

图片由Amazon Web Services,Inc提供