Expo android 应用程序,PushNotifications 在独立的 apk 中不起作用?

Luc*_*uke 7 android push-notification react-native expo

我面临一个问题,当我通过 expo 客户端应用程序运行应用程序时,PushNotifications 工作。但是如果我正在构建一个独立的 .apk,我需要安装 expo 客户端才能获得 pushtoken。而且,当博览会客户端未打开时,我无法获得推送令牌。所以我的客户需要安装 2 个应用程序。一个是我的,构建了独立的 .apk,另一个是 expo 客户端。流程很繁琐。。

Luc*_*uke 17

我能够在我的项目中修复博览会推送通知。这是我自己的错。问题是这样的,甚至文档也提供了解决方案: 在此处输入图片说明 所以我用 Firebase 创建了一个帐户,然后我附加了新项目。然后我运行了这个命令:

expo push:android:upload --api-key <Server key>
Run Code Online (Sandbox Code Playgroud)

您可以从此部分获取服务器密钥: 在此处输入图片说明

它看起来像这样:

XXXSdasx665:APA91bFL2342342342342342342342RxDAUbCOP0IL32etVueLhnLtoFErsqHBhjW-SRPSZGdU18BBIltUx7Wm234234234sxdxzcasdSElRyTEdMR7vmLJHgVvbOGx-0-SWDasdzxzxzx

Run Code Online (Sandbox Code Playgroud)

这帮助我解决了我遇到的问题。希望它也能帮助别人。

这是一个 app.json 文件:

{
  "expo": {
    "name": "workero",
    "slug": "workero",
    "privacy": "public",
    "sdkVersion": "36.0.0",
    "platforms": ["android"],
    "version": "1.0.0",
    "orientation": "portrait",
    "icon": "./assets/icon.png",
    "splash": {
      "image": "./assets/splash.png",
      "resizeMode": "contain",
      "backgroundColor": "#ffffff"
    },
    "updates": {
      "fallbackToCacheTimeout": 0
    },
    "assetBundlePatterns": ["**/*"],
    "ios": {
      "supportsTablet": true
    },
    "android": {
      "package": "com.workero.apper",
      "googleServicesFile": "./google-services.json"
    }
  }
}

Run Code Online (Sandbox Code Playgroud)


can*_*lan 5

SDK 38后出现此问题,简单几步即可解决。除非您仍在 Expo 客户端中运行您的应用程序,否则所有使用 Expo 制作的托管和裸工作流 Android 应用程序都需要 Firebase Cloud Messaging。设置您的 Expo Android 应用程序以使用您自己的 FCM 凭据获取推送通知。您基本上需要创建一个 Firebase 帐户并按照步骤操作。

  1. 如果您还没有为您的应用创建 Firebase 项目,现在请点击 Firebase 控制台中的添加项目。

  2. 在您的新项目控制台中,点击将 Firebase 添加到您的 Android 应用并按照设置步骤进行操作。确保您输入的 Android 包名称与 app.json.

  3. 下载google-services.json文件并将其放在您的 Expo 应用程序的根目录中。在您的 中app.json,添加一个 android.googleServicesFile 字段,其中google-services.json包含您刚下载的文件的相对路径 。如果你把它放在根目录中,这可能看起来像

         { 
    
               "android":{ 
                    "googleServicesFile": "./google-services.json",
                    "useNextNotificationsApi":true,
                }
    
    
         }
    
    Run Code Online (Sandbox Code Playgroud)

"useNextNotificationsApi":true也是必需的。最后,运行expo build:android. 在这些步骤之后,您需要将您的 api 密钥推送到博览会服务器。

  1. 为了让 Expo 使用您的凭据从我们的服务器发送通知,您需要上传您的秘密服务器密钥。您可以在 Firebase 控制台中为您的项目找到此密钥:
  2. 在侧边栏的顶部,单击“项目概览”右侧的齿轮图标以转到您的项目设置。
  3. 单击“设置”面板中的“云消息传递”选项卡。
  4. 复制服务器密钥旁边列出的令牌。
  5. 运行expo push:android:upload --api-key <your-token-here> ,替换<your-token-here>为您刚刚复制的字符串。它会将您的令牌安全地存储在博览会服务器上,只有在您发送推送通知时才能访问它。

此步骤将帮助您通过expo server sdk或通过 expo push api ExpoPush Api推送通知 。(目前在 IOS 中未启用 FCM。)