【发布时间】:2021-05-26 11:13:20
【问题描述】:
我目前正在尝试创建一个 Flutter 应用程序,该应用程序可以在由另一个用户引起的特定(未知)时间振动用户。我针对 Android 版本的解决方案是使用 Firebase Cloud Messaging 启用推送通知,同时也未优化电池(针对应用程序)。当它是一个高优先级有效负载将处理应用程序打盹(空闲待机)时,我听到了推送通知,它在 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 的内容,因为我不确定后台获取和进程是否是解决方案。
编辑:我了解到,当它之后打开另一个应用程序(直到您返回我的应用程序)时,它也会暂停/不工作。
【问题讨论】:
标签: ios iphone firebase apple-push-notifications ios-app-suspended-state