WIP: daily-notification-plugin-integration #230
Draft
jose
wants to merge 0 commits from
daily-notification-plugin-integration into master
pull from: daily-notification-plugin-integration
merge into: trent_larson:master
trent_larson:master
trent_larson:notify-api
trent_larson:16kb-pages
trent_larson:notify-api_android
trent_larson:edit-proj-parent
trent_larson:2026-01-01-tweaks
trent_larson:no-locks
trent_larson:web-share-target-native-implementation
trent_larson:homeview-gift-recording-improvements
trent_larson:accountview-contact-management-bundling
trent_larson:gifted-dialog-recipient-fix
trent_larson:entitygrid-infinite-scroll-improvements
trent_larson:meeting-project-dialog
trent_larson:refactor-initialize
trent_larson:integrate-notification-plugin
trent_larson:project-representative-dialog
trent_larson:entity-selection-list-component
trent_larson:bulk-members-dialog-refactor
trent_larson:contact-path
trent_larson:entity-selection-list-component-infinite-scroll
trent_larson:meeting-members-admission-dialog
trent_larson:address-duplicates
trent_larson:meeting-members-admission-dialog-refactor
trent_larson:android-file-save
trent_larson:meeting-members-admission-improvements
trent_larson:emojis
trent_larson:meeting-members-set-visibility
trent_larson:ios-disable-zoom
trent_larson:view-headings-refresh
trent_larson:star-projects2
trent_larson:remove-cannot-upload-images-notification
trent_larson:star-projects
trent_larson:notification-system
trent_larson:load-build-mode-env-file
trent_larson:notify-initialization-fix
trent_larson:new-activity-mark-read
trent_larson:active_did_redux
trent_larson:ios-qr-code-copy
trent_larson:master-patch
trent_larson:registration-prompt-parity
trent_larson:seed-phrase-backup-prompt
trent_larson:claimview-fullfills-offer
trent_larson:wip_new_notifications
trent_larson:account-import-duplicate-prevention
trent_larson:electron-copy-paste-keyboard-shortcuts
trent_larson:switching-identities-change-name
trent_larson:playwright-test-00-fix
trent_larson:profile_include_location
trent_larson:electron-build-config-overwrite
trent_larson:projectview-hide-offer-link-unregistered
trent_larson:activedid_migration
trent_larson:build-web-serve-test
trent_larson:didview-invalid-did-handling
trent_larson:electron-build-capacitor-config
trent_larson:contact-gifting-current-user
trent_larson:android-safe-area-insets
trent_larson:deep-link-views-safe-area-inset
trent_larson:dialog-notification-z-index
trent_larson:ios-contact-copy
trent_larson:onboard-alert-component
trent_larson:dialog-styles-unified
trent_larson:units-mocking
trent_larson:performance-optimizations-testing
trent_larson:playwright-test-60-fix
trent_larson:notification-section
trent_larson:fix-deep-link
trent_larson:platformservicemixin-interface-consolidation
trent_larson:nearby-filter
trent_larson:replace-iconrenderer
trent_larson:imagemagick-anrdoid
trent_larson:ask-for-contacts-export
trent_larson:offer-validation-logic
trent_larson:playwright-test-updates
trent_larson:logger-level
trent_larson:remove-image-cache
trent_larson:claim-view-error-handling
trent_larson:build-improvement
trent_larson:get-get-hash
trent_larson:logging-upgrade
trent_larson:notification-line-wrapping
trent_larson:build-dev-to-dist
trent_larson:fix-contact-import-export
trent_larson:web-serve-fix
trent_larson:deep-link
trent_larson:web-tests
trent_larson:build-with-env
trent_larson:onboarding-dialog-fix
trent_larson:streamline-attempt
trent_larson:matthew-scratch-2025-06-28
trent_larson:gifting-periphery-improvements
trent_larson:gifting-ui-2025-05
trent_larson:migrate-dexie-to-sqlite
trent_larson:deep-links-android-update
trent_larson:android-15-check
trent_larson:capacitor-local-save
trent_larson:master-settings-upgrade
trent_larson:contacts-view-fixes
trent_larson:ui-fixes-2025-06-w2
trent_larson:home-icon-enhancements
trent_larson:search-map-fix
trent_larson:sql-absurd-sql-further
trent_larson:sql-absurd-sql
trent_larson:new-storage
trent_larson:sql-wa-sqlite
trent_larson:trent-tweaks
trent_larson:qrcode-capacitor
trent_larson:cross-platform-factory-redux
trent_larson:build-ios
trent_larson:ai-context
trent_larson:cross-platform-factory
trent_larson:registration-gate
trent_larson:db-backup-cross-platform
trent_larson:eye-slash
trent_larson:homeview-cleanup-2025-03
trent_larson:fix-service-worker
trent_larson:main
trent_larson:app_id_fix
trent_larson:electron_fix_20250317
trent_larson:homeview-refresh-2025-02
trent_larson:deep_linking
trent_larson:ui-fixes-2025-03
trent_larson:side_step
trent_larson:split_build_process
trent_larson:d9085ced6df7dc7bdcd899959cea6489cab7f8b8
trent_larson:v-onboarding-2024-04
trent_larson:nostr
trent_larson:playwright-pwa-install-test
trent_larson:offer-edit
trent_larson:passkey-cache
trent_larson:passkey
trent_larson:profile-pic
trent_larson:notify-time
trent_larson:ui-fixes-2024-03
trent_larson:photo-reverse
trent_larson:starred-projects
trent_larson:vite-version
trent_larson:design-tweaks-2023-12
trent_larson:sw-cleanup
trent_larson:home-view-notification-improvements
trent_larson:friend-tech-inspired-pwa-dialog
trent_larson:notification-request-permission-dialog
trent_larson:plan-loc
trent_larson:project-gives
trent_larson:tweaks
trent_larson:simple-signer
trent_larson:experimental_plugin
trent_larson:tmp
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "daily-notification-plugin-integration"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
- Add podspec file for daily notification plugin with correct name - Create TimesafariDailyNotificationPlugin.podspec to match Capacitor's expected naming convention - Podspec name must match Podfile reference for CocoaPods compatibility - Update Podfile to reference TimesafariDailyNotificationPlugin - Add automated fix script for podspec creation - scripts/fix-daily-notification-podspec.sh creates podspec with correct name before Capacitor sync - Integrated into build-ios.sh build process - Fix typo in package.json: change "pina" to "pinia" (^2.1.7) Fixes: - Vite build error: "Failed to resolve import 'pinia'" - CocoaPods error: "No podspec found for 'TimesafariDailyNotificationPlugin'" - CocoaPods error: "The name of the given podspec doesn't match the expected one" The podspec file is created automatically during the build process to ensure Capacitor sync can find the plugin with the expected name, while maintaining compatibility with the actual podspec file name in the plugin package.After changing DailyNotificationReceiver to exported="true", testing revealed that while the receiver works when manually triggered, AlarmManager broadcasts are not reaching it when alarms fire automatically. Alarms are scheduled and fire correctly, but the PendingIntent broadcast does not trigger the receiver. Added comprehensive documentation and diagnostic tools: 1. Documentation (doc/daily-notification-plugin-android-receiver-issue.md): - Complete problem analysis with evidence from logs and dumpsys - Root cause hypotheses focusing on PendingIntent creation in plugin - Testing steps and expected behavior after fix - Technical details for plugin maintainer reference 2. Test scripts: - scripts/test-notification-receiver.sh: Manually trigger receiver to verify it works and test with/without ID parameter - scripts/check-alarm-logs.sh: Check logs and verify alarm scheduling Findings: - Receiver registration is correct (exported="true" works for manual tests) - Alarms schedule and fire successfully (confirmed via dumpsys alarm) - Issue is in plugin's PendingIntent creation - broadcasts don't reach receiver - Additional issue: Intent extras missing scheduleId (causes "missing_id" error) The exported="true" change was necessary and correct. The remaining issue requires a fix in the plugin's PendingIntent creation code to explicitly set the component and include the scheduleId in Intent extras. This documentation is intended for use when working on the plugin project to fix the PendingIntent delivery issue.Resolves long-standing issue where the second scheduled time (after editing the reminder) did not fire on Android. - PushNotificationPermission: add open(..., options?: { skipSchedule }). When skipSchedule is true (edit flow), dialog only invokes callback with time/message; parent is sole scheduler so the plugin is not called twice. - AccountViewView: pass { skipSchedule: true } when opening the dialog for edit; keep cancel (iOS only) + single scheduleDailyNotification in callback. - NativeNotificationService: serialize scheduleDailyNotification so only one schedule runs at a time (scheduleLock + doScheduleDailyNotification). - AccountViewView: guard edit-reminder callback with editReminderScheduleInProgress so one schedule per user action. - Gate pre-cancel on Android in edit flow (CONSUMING_APP brief): skip cancelDailyNotification before schedule on Android; plugin cancels internally. - Use single stable reminder id and always pass id on both platforms (plugin 1.1.2+). - Add doc/plugin-android-edit-reschedule-alarm-not-firing.md for plugin repo (cancel-before-reschedule may cancel the PendingIntent used for setAlarmClock).- Rename "Reminder Notification(s)" to "Daily Reminder" in Account and Help views - Update NOTIFY_PUSH_SUCCESS title/message ("Notifications On", "Daily Reminder notifications are now enabled.") - Align plugin spec doc with "Notifications" section namingView command line instructions
Checkout
From your project repository, check out a new branch and test the changes.