如何将iOS设备从应用挂起状态唤醒?



我目前正在尝试创建一个颤振应用程序,可以在由另一个用户引起的特定(未知)时间振动用户。对于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端,并上传一个自定义的CAF文件,该文件是一个空声音。

最新更新