Total rebrand across KMM project: - Kotlin package: com.example.casera -> com.tt.honeyDue (dirs + declarations) - Gradle: rootProject.name, namespace, applicationId - Android: manifest, strings.xml (all languages), widget resources - iOS: pbxproj bundle IDs, Info.plist, entitlements, xcconfig - iOS directories: Casera/ -> HoneyDue/, CaseraTests/ -> HoneyDueTests/, etc. - Swift source: all class/struct/enum renames - Deep links: casera:// -> honeydue://, .casera -> .honeydue - App icons replaced with honeyDue honeycomb icon - Domains: casera.treytartt.com -> honeyDue.treytartt.com - Bundle IDs: com.tt.casera -> com.tt.honeyDue - Database table names preserved Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Push Notification Test Payloads
These .apns files can be dragged onto the iOS Simulator to test push notifications with action buttons.
How to Use
- Run the app on the iOS Simulator
- Drag and drop any
.apnsfile onto the Simulator window - The notification will appear with the appropriate action buttons
Before Testing
Edit the task_id in each file to match a valid task ID from your database.
Available Payloads
| File | Category | Actions | Description |
|---|---|---|---|
task_overdue.apns |
TASK_ACTIONABLE | edit, complete, cancel, mark_in_progress | Overdue task notification |
task_due_soon.apns |
TASK_ACTIONABLE | edit, complete, cancel, mark_in_progress | Task due within threshold |
task_in_progress.apns |
TASK_IN_PROGRESS | edit, complete, cancel | Task being worked on |
task_cancelled.apns |
TASK_CANCELLED | uncancel, delete | Cancelled task |
task_completed.apns |
TASK_COMPLETED | (none - read only) | Completed one-time task |
task_assigned.apns |
TASK_ACTIONABLE | edit, complete, cancel, mark_in_progress | Task assigned to user |
task_generic_free_user.apns |
TASK_NOTIFICATION_GENERIC | (none) | Free user sees generic message |
iOS Notification Categories
The category field in aps maps to these iOS notification categories:
TASK_ACTIONABLE- For overdue, due_soon, upcoming tasks (full action set)TASK_IN_PROGRESS- For tasks currently being worked onTASK_CANCELLED- For cancelled tasks (can uncancel or delete)TASK_COMPLETED- For completed one-time tasks (read-only, no actions)TASK_NOTIFICATION_GENERIC- For free users (no actions, generic message)
Payload Structure
{
"Simulator Target Bundle": "com.tt.honeyDue.honeyDueDev",
"aps": {
"alert": {
"title": "Notification Title",
"subtitle": "Residence Name",
"body": "Notification body text"
},
"sound": "default",
"badge": 1,
"category": "TASK_ACTIONABLE",
"mutable-content": 1,
"thread-id": "task-{id}"
},
"task_id": 123,
"task_name": "Task Name",
"residence_id": 1,
"residence_name": "Residence Name",
"notification_type": "task_overdue|task_due_soon|task_completed|task_assigned",
"button_types": ["edit", "complete", "cancel", "mark_in_progress"],
"is_premium": true
}
Custom Data Fields
| Field | Type | Description |
|---|---|---|
task_id |
int | The task ID to navigate to when tapped |
task_name |
string | Display name of the task |
residence_id |
int | The residence ID |
residence_name |
string | Display name of the residence |
notification_type |
string | Type of notification (for analytics/logging) |
button_types |
array | Available actions for this task state |
is_premium |
bool | Whether user is premium (affects display) |
Notes
- The
Simulator Target Bundlemust match your app's bundle identifier mutable-content: 1allows the Notification Service Extension to modify contentthread-idgroups related notifications together- The app must register notification categories on launch for actions to work