ここ最近開発を続けていた、私の新しいアプリ「かってに通知メモ」App Store審査通過しました!!

目次
「かってに通知メモ」とは
書くだけで通知が届く、ずぼら向けリマインダーアプリです📱
「15分後に掃除」「来週月曜に病院」
自然な日本語をそのまま入力するだけ。
時間の設定は一切不要です✨
▼ダウンロードはこちら
https://apps.apple.com/app/かってに通知メモ/id6762107573
通知×音声入力×自然言語解析の組み合わせは、個人開発では最難関レベル
理由は「通知」がOSで最も差が大きい機能の1つだからです。
今回特に大変だった理由
| 機能 | iOS | Android |
|---|---|---|
| 通知権限 | シンプル | Android 13以降で複雑化 |
| 正確なアラーム | 制限なし | SCHEDULE_EXACT_ALARM 必要 |
| 通知の受信 | 自動 | <receiver>タグ必須 |
| 音声入力リアルタイム | スムーズ | OS仕様で遅い |
| バッテリー最適化 | なし | 通知をブロックする |
Dart コードでの書き分け
特に「通知」はOS固有の仕様が多いので、このように書き分けが必要になります
import 'dart:io';
if (Platform.isIOS) {
// iOSだけの処理
} else if (Platform.isAndroid) {
// Androidだけの処理
}
パッケージの実装で書き分け
今回 requestPermission() で使った方法
// iOS用
_plugin.resolvePlatformSpecificImplementation
IOSFlutterLocalNotificationsPlugin>()
// Android用
_plugin.resolvePlatformSpecificImplementation
AndroidFlutterLocalNotificationsPlugin>()
設定ファイルで書き分け
| ファイル | 対象 |
|---|---|
| android/AndroidManifest.xml | Androidのみ |
| ios/Runner/Info.plist | iOSのみ |
| pubspec.yaml | 両方共通 |
| android/app/build.gradle.kts | Androidのみ |
まとめ
Flutterは「1つのコードで両方動く」が売りですが、通知・権限・課金などはOS固有の仕様が多いので、このように書き分けが必要になります
