内部テストを消化したのでクローズドテストを実施しようと思ったが、aabファイルをアップロードしたらエラーが出て、AndroidManifest.xmlを修正する羽目に。
一段レベルが高くなるぶん、利用しているパッケージなどのチェックが厳しくなるイメージ。
それなら、内部テストの段階でチェックすればいいのにと思ってしまう。
AndroidManifest.xmlで以下のコードがあるが、これはカレンダーや目覚まし時計のアプリしか認められていないので、他用途では使ってはいけないということらしい。
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM"/>
<uses-permission android:name="android.permission.USE_EXACT_ALARM"/>
で、このコードを外すと通知が出なくなった。
テスト終わってるのに、先に教えてくれって感じ。
何度かテストをやり直して最終的なコードはこちら。
await flutterLocalNotificationsPlugin.zonedSchedule(
id,
'🎉TEST Notification',
msg,
nextInstanceOfTimer(futureDate, notificationTime),
const NotificationDetails(
android: AndroidNotificationDetails(
'channel_id',
'channel_name',
importance: Importance.max,
priority: Priority.high,
playSound: true,
icon: 'notification',
enableVibration: true,
// 通知の持続性を向上
ongoing: false,
autoCancel: true,
// バッテリー最適化を回避するための設定
fullScreenIntent: false,
),
iOS: DarwinNotificationDetails(),
),
// 変更前の設定
// androidScheduleMode: AndroidScheduleMode.exactAllowWhileIdle,
// matchDateTimeComponents: DateTimeComponents.time,
// 変更後の設定
// USE_EXACT_ALARM権限なしでも動作する設定
androidScheduleMode: AndroidScheduleMode.inexactAllowWhileIdle,
matchDateTimeComponents: null,
);