如何在Android上通过推送通知播放警报声音,无论设备锁定或应用程序杀死没有前台服务/警报管理器?



我正在构建一个紧急安全Android应用程序。其中一个重要的要求是播放推送通知的警报声音。这种情况很少发生,所以很可能应用程序不会运行(可能强制停止),设备可能被锁定或处于睡眠模式。

我正在使用FCM发送这样的推送通知:

public class NotificationManager extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
super.onMessageReceived(remoteMessage);
playAlarmSound();
}
}

我的Service是这样的:

<service
android:name=".notification.NotificationManager"
android:directBootAware="true"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>

但是,只有当设备未锁定时,我才会收到通知。怎样才能保证这一点呢?

我看到了一些使用警报管理器的帖子&前台服务——但我不想因为一个不经常(但非常重要)的用例而持续运行和消耗电池?

我建议使用自定义声音,这样您就可以播放警报声音。将其设置为高优先级,以便即使设备处于休眠模式,FCM也会立即尝试传递它。

然而,如果你仍然考虑使用闹钟管理器,你可以看看这些关于电池使用的帖子:

  • Android:正确使用AlarmManager而不耗尽电池
  • 关于alarmManager和性能/电池问题

最新更新