0

我目前正在尝试创建一个 Flutter 应用程序,该应用程序可以在由另一个用户引起的特定(未知)时间振动用户。我针对 Android 版本的解决方案是使用 Firebase Cloud Messaging 启用推送通知,同时也未优化电池(针对应用程序)。当它是高优先级有效负载将处理 App Doze(空闲待机)并且它在 android 上运行良好时,我听到了推送通知。我最近在 iOS 版本上收到了推送通知,但通知似乎并没有唤醒设备(并允许它监听 Firebase Firestore 上的变化,以便它可以振动)。如果收到推送通知,一种解决方案是运行代码(振动 API),但我不确定如何执行此操作。有没有办法让应用程序从挂起的应用程序状态中唤醒,以便它可以检查 Firestore 上的更改?目前,当应用程序处于后台时它可以工作,但这还不够。

如果有帮助,这是我的通知负载:

const payload: admin.messaging.Message = {
          topic: newValue.lobbyCode,
          notification: {
            title: "Bzzzt!",
            body: "You've been buzzed!",
          },
          apns: {
            payload: {
              aps: {
                contentAvailable: true,
              },
            },
          },
          android: {
            priority: "high",
          },
        };

我目前正在使用contentAvailable: true,因为我听说它可以用来解决这个问题。我也在使用该vibration.dart插件,它似乎无法让我像在 Android 上那样完全控制振动。在 xcode 的功能上,我启用了 backgroundfetch、后台进程、远程消息传递和推送通知。但是,我没有添加任何info.plist关于这些的具体内容,因为我不确定后台获取和进程是否是解决方案。

编辑:我了解到,当另一个应用程序在它之后打开时它也被暂停/不工作(直到你返回我的应用程序)。

4

1 回答 1

1

我所做的是将声音权限添加到 iOS 端并上传一个自定义 CAF 文件,该文件是一个空声音。

于 2021-03-01T01:01:48.667 回答