Remote Alarm 技術検証: 3 方式を実機 + 実 APNs で検証し配送経路を決める
- Dominant language
- Swift
- Stars
- 0
- Forks
- 0
- Avg merge
- 8h 5m
- Merged PRs (30d)
- 54
Description
## 目的
IdeaMemo の企画 issue ( https://github.com/bannzai/IdeaMemo/issues/194 ) に定義した「サーバー側のイベントを契機に、ユーザー操作なしで AlarmKit アラームを登録できるか」を実機 + 実 APNs で検証し、Alarmify の配送経路を決める。
## やること
- 雛形 (`AlarmifyNotificationService` / `AppDelegate` の background push 受信 / `AlarmifyWidget`) を実機にインストールし (`make install-device`)、APNs のデバイストークンを取得する
- 開発用に APNs へ push を送る手段を用意する (バックエンド雛形 #2 が未完なら、APNs 認証キー (.p8) で直接送る一時スクリプトを `scripts/` に置く。キーはコミットしない)
- 3 方式を順に検証し、IdeaMemo#194 のチェックリスト (App Background / terminated / Device locked / Low Power Mode / 長期間未起動 / 遅延) を埋める
1. Notification Service Extension (`mutable-content: 1`)
2. Silent / Background Push (`content-available: 1`)
3. Live Activity / ActivityKit Remote Push (Push-to-Start + `alarm` payload)
- 雛形時点の観測: simulator (iOS 26.5) では `xcrun simctl push` の visible push が届いても Notification Service Extension のプロセスが起動しなかった (ログに extension の記録なし)。Apple silicon の simulator は署名付きビルドなら実 APNs を受けられるため、必要なら signed simulator build + 実 APNs でも比較する
- 結果を `.claude/rules/ios-alarmkit-constraints.md` の「Alarmify での運用ルール」5 と `documents/PROJECT.md` の技術方針に追記し、採用する経路を決める
## 完了条件
- [ ] 3 方式それぞれの検証結果 (成立 / 不成立と条件) が IdeaMemo#194 のチェックリストと本 issue のコメントに記録されている
- [ ] 採用する配送経路 (複数可) と、その理由が `documents/PROJECT.md` に記載されている
- [ ] 実機・実 APNs が必要なため本 issue は人間の操作を含む。agent は push 送信スクリプト・ログ収集・結果の記録を担当する
## セッション再開
```sh
cd /Users/bannzai/ghq/github.com/bannzai/Alarmify
claude --resume a8775485-4be7-4ce0-8456-d1739a29aab6
```
Contributor guide
No contributing guide indexed for this repository
Research direction
Start with the existing AlarmifyNotificationService, AppDelegate background-push entry point, and AlarmifyWidget, then run make install-device on real hardware and obtain an APNs device token. Compare the three listed delivery methods against the IdeaMemo#194 checklist, using scripts/ for any temporary push sender and recording logs and conditions. Done means the results are recorded in the issue, the selected route is justified in documents/PROJECT.md, and .claude/rules/ios-alarmkit-constraints.md contains the operating rules.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ios, swift
- Domain
- documentation, mobile-dev, testing-qa
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 35/100