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: :master
:master
:retire-legacy-notification
:notify-api_endpoint-query
:notify-api-sms
:notify-api
:giftopia-app-icon
:fix/ios-share-target-reliability
:thanks-button-rework
:gifted-details-footer
:16kb-pages
:notify-api_android
:edit-proj-parent
:daily-notification-plugin-integration
:2026-01-01-tweaks
:no-locks
:web-share-target-native-implementation
:homeview-gift-recording-improvements
:accountview-contact-management-bundling
:gifted-dialog-recipient-fix
:entitygrid-infinite-scroll-improvements
:meeting-project-dialog
:refactor-initialize
:integrate-notification-plugin
:project-representative-dialog
:entity-selection-list-component
:bulk-members-dialog-refactor
:contact-path
:entity-selection-list-component-infinite-scroll
:meeting-members-admission-dialog
:address-duplicates
:meeting-members-admission-dialog-refactor
:android-file-save
:meeting-members-admission-improvements
:emojis
:meeting-members-set-visibility
:ios-disable-zoom
:view-headings-refresh
:star-projects2
:remove-cannot-upload-images-notification
:star-projects
:notification-system
:load-build-mode-env-file
:notify-initialization-fix
:new-activity-mark-read
:active_did_redux
:ios-qr-code-copy
:master-patch
:registration-prompt-parity
:seed-phrase-backup-prompt
:claimview-fullfills-offer
:wip_new_notifications
:account-import-duplicate-prevention
:electron-copy-paste-keyboard-shortcuts
:switching-identities-change-name
:playwright-test-00-fix
:profile_include_location
:electron-build-config-overwrite
:projectview-hide-offer-link-unregistered
:activedid_migration
:build-web-serve-test
:didview-invalid-did-handling
:electron-build-capacitor-config
:contact-gifting-current-user
:android-safe-area-insets
:deep-link-views-safe-area-inset
:dialog-notification-z-index
:ios-contact-copy
:onboard-alert-component
:dialog-styles-unified
:units-mocking
:performance-optimizations-testing
:playwright-test-60-fix
:notification-section
:fix-deep-link
:platformservicemixin-interface-consolidation
:nearby-filter
:replace-iconrenderer
:imagemagick-anrdoid
:ask-for-contacts-export
:offer-validation-logic
:playwright-test-updates
:logger-level
:remove-image-cache
:claim-view-error-handling
:build-improvement
:get-get-hash
:logging-upgrade
:notification-line-wrapping
:build-dev-to-dist
:fix-contact-import-export
:web-serve-fix
:deep-link
:web-tests
:build-with-env
:onboarding-dialog-fix
:streamline-attempt
:matthew-scratch-2025-06-28
:gifting-periphery-improvements
:gifting-ui-2025-05
:migrate-dexie-to-sqlite
:deep-links-android-update
:android-15-check
:capacitor-local-save
:master-settings-upgrade
:contacts-view-fixes
:ui-fixes-2025-06-w2
:home-icon-enhancements
:search-map-fix
:sql-absurd-sql-further
:sql-absurd-sql
:new-storage
:sql-wa-sqlite
:trent-tweaks
:qrcode-capacitor
:cross-platform-factory-redux
:build-ios
:ai-context
:cross-platform-factory
:registration-gate
:db-backup-cross-platform
:eye-slash
:homeview-cleanup-2025-03
:fix-service-worker
:main
:app_id_fix
:electron_fix_20250317
:homeview-refresh-2025-02
:deep_linking
:ui-fixes-2025-03
:side_step
:split_build_process
:d9085ced6df7dc7bdcd899959cea6489cab7f8b8
:v-onboarding-2024-04
:nostr
:playwright-pwa-install-test
:offer-edit
:passkey-cache
:passkey
:profile-pic
:notify-time
:ui-fixes-2024-03
:photo-reverse
:starred-projects
:vite-version
:design-tweaks-2023-12
:sw-cleanup
:home-view-notification-improvements
:friend-tech-inspired-pwa-dialog
:notification-request-permission-dialog
:plan-loc
:project-gives
:tweaks
:simple-signer
:experimental_plugin
: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.
- 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.