我目前正在尝试创建一个 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
关于这些的具体内容,因为我不确定后台获取和进程是否是解决方案。
编辑:我了解到,当另一个应用程序在它之后打开时它也被暂停/不工作(直到你返回我的应用程序)。