使用SNS发送推送通知-Expo App

菜鸟

我正在创建一个将使用推送通知的Expo应用程序。我不想为此使用Expo的服务器,而是想使用AWS SNS。这是我所做的:

  1. 在Firebase中创建了应用,并获得了API密钥。
  2. 使用在步骤1中获得的API密钥在SNS上创建平台应用程序。
  3. 使用expo获得设备令牌。
  4. 在步骤2中创建的应用程序中的SNS上创建了一个端点。

当我尝试发送推送通知时,它不起作用。我试过了:

  • 我确保使用.getDevicePushTokenAsync()代替getExpoPushTokenAsync()来获取可与SNS一起使用的设备令牌。
  • 当我在Android设备上测试该应用程序时,我可以console.log设备令牌(这是我用来添加上述第4步中提到的端点的东西。
  • 我构建了一个独立的应用程序,下载了.apk文件,然后将其安装在我的设备上,但现在仍未检索到推送令牌。我真的不知道为什么在构建应用程序并将其安装在我的设备上后,此方法不再起作用。它返回

我在想,如果我能够构建该应用程序并获取设备令牌,则可以使它正常运行,但是没有运气。对我做错了或应该做的事情有任何想法吗?

菜鸟

经过2天的奋斗让它起作用,我终于做到了。我将提供我所遵循的所有步骤,希望对其他人有所帮助:

  1. 创建一个Firebase项目。
    • 点击“添加项目”
    • 提供一个名字。点击“继续”
    • 点击“创建项目”
    • 项目准备就绪后,单击“继续”
  2. 点击显示“项目概述”旁边的齿轮图标
  3. 单击项目设置。
  4. 在显示的页面中,单击“云消息传递”
  5. 复制“服务器密钥”的值。您稍后将在SNS中创建应用程序平台时使用它。
  6. 在相同的“设置”页面中,单击“常规”选项卡。
  7. 在页面底部,您将看到一个显示“您的应用程序”的部分。它应该说:“您的项目中没有应用程序”。单击Android图标。
  8. 这是重要的一步。您需要提供“ Android包名称”。转到Expo应用程序并找到android.package的值。将其复制并放在Firebase上要求输入Android软件包名称的位置。
  9. 点击“注册应用”。
  10. 重要步骤。点击显示“下载google-services.json”的按钮。
  11. 将文件保存在您的博览会项目的根目录下。
  12. 返回到Expo项目中的app.json文件。它具有android值的地方,请确保这至少是您拥有的:
"android": {
      "googleServicesFile": "./google-services.json",
      "package": "com.astest.mypackage",
      "useNextNotificationsApi": true
 },
  1. 请按照此处有关如何设置客户端应用程序的说明进行操作。确保不包括sendPushNotification()函数,因为您实际上将使用SNS。

  2. 在registerForPushNotificationsAsync()函数中,确保使用.getDevicePushTokenAsync()而不是.getExpoPushTokenAsync()

  3. 在SNS中创建平台应用程序

  • 推送通知平台:选择FCM
  1. 在代码中,确保在SNS中创建应用程序终结点。或通过控制台进行操作。

  2. 通过使用SNS中的控制台发送测试消息来测试设置。选择您的端点,然后单击“发布消息”。

  3. 单击“每次交付的自定义有效负载”。

  4. 使用此代码:

{
  "GCM": "{ \"notification\": {\"title\": \"Title of notification\", \"body\": \"It works\" } }"
}
  1. 单击发布消息。

  2. 要以编程方式发布消息,您可以执行以下操作:

var sns = new AWS.SNS({ apiVersion: '2010-03-31', region: 'us-east-1'})
    
        let notification = JSON.stringify({
            'notification': {
                'title': "title of notification",
                'body': "Your message goes here",
                'data': {}
            }
        });
    
    
        var params = {
            Message: JSON.stringify({
                GCM: notification
            }),
            MessageStructure: "json",
            TargetArn: "###Your Target ARN##"
        };
    
        sns.publish(params, function(err, data) {
            if (err) {
                console.log("There was an error sending the push notification----> ", err)
            } // an error occurred
            else{
                console.log("Push notification sent successfully!!!! ", data);
            }                // successful response
        });

现在,这当然仅适用于Android。但这有效!使它适应APN应该不会太困难。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Expo for React Native App中禁用调试

如何为create-react-native-app生成apk文件(使用EXPO.IO组件)

React Native如何使用Expo和Firebase设置推送通知

EXPO React Native App无法从Windows加载

react-navigation:使用Expo.addListener在推送通知中进行导航时不变

使用没有expo-cli的create-react-native-app

在背景和前景中使用Expo更改推送通知中的徽章计数

React-Native错误使用expo将视频添加到app.js作为背景

PHP的Expo Push通知

发送OneSignal推送通知时,Android App崩溃

Baqend的Expo Push通知

使用lambda和aws sns发送推送通知给单个设备

无法使用Expo在移动设备上重新加载React Native App

退出的EXPO React Native App需要EXPO?

尝试使用Ionic App发送推送通知时,从AWS SNS返回的Endpoint Disabled异常

在Expo App中使用库时,react-native-Uuid-generator崩溃

ReactNative Expo App性能非常慢

Laravel 5.7使用Expo发送通知

使用Google App签名在Android上发布的Expo Expo

Laravel Expo推送通知-在Android上未收到通知

在React Native中使用Firebase云功能进行EXPO推送通知

使用Expo React Native(Android)收听FCM推送通知传递

如何在React Native Expo中使用按钮发送通知

Firebase和Expo。部署Expo App。隐藏键

未收到推送通知-AWS SNS和Expo

在Expo App中加载字体时出错

无法从Google App Engine发送iOS推送通知

使用Amazon SNS从iOS发送推送通知

使用 Visual Studio App Center for Auth 时,是否必须退出 Expo?