fix(ios): enable Capacitor plugin discovery via CAPBridgedPlugin conformance
Capacitor iOS was not discovering DailyNotificationPlugin because it did not conform to the CAPBridgedPlugin protocol required for runtime discovery. Changes: - Add @objc extension to DailyNotificationPlugin implementing CAPBridgedPlugin with identifier, jsName, and pluginMethods properties - Force-load plugin framework in AppDelegate before Capacitor initializes - Remove duplicate BGTaskScheduler registration from AppDelegate (plugin handles it) - Update podspec to use dynamic framework (static_framework = false) - Add diagnostic logging to verify plugin discovery Result: Plugin is now discovered by Capacitor and all methods are accessible from JavaScript. Verified working with checkPermissionStatus() method. Files modified: - ios/Plugin/DailyNotificationPlugin.swift: Added CAPBridgedPlugin extension - test-apps/ios-test-app/ios/App/App/AppDelegate.swift: Force-load + diagnostics - ios/DailyNotificationPlugin.podspec: Dynamic framework setting - doc/directives/0003-iOS-Android-Parity-Directive.md: Documented solution
This commit is contained in:
@@ -40,6 +40,7 @@ public class DailyNotificationPlugin: CAPPlugin {
|
||||
var stateActor: DailyNotificationStateActor?
|
||||
|
||||
override public func load() {
|
||||
NSLog("DNP-DEBUG: DailyNotificationPlugin.load() called - Capacitor discovered the plugin!")
|
||||
super.load()
|
||||
setupBackgroundTasks()
|
||||
|
||||
@@ -58,6 +59,7 @@ public class DailyNotificationPlugin: CAPPlugin {
|
||||
)
|
||||
}
|
||||
|
||||
NSLog("DNP-DEBUG: DailyNotificationPlugin.load() completed - initialization done")
|
||||
print("DNP-PLUGIN: Daily Notification Plugin loaded on iOS")
|
||||
}
|
||||
|
||||
@@ -1372,4 +1374,47 @@ public class DailyNotificationPlugin: CAPPlugin {
|
||||
print("DNP-FETCH-SCHEDULE: Failed to schedule background fetch: \(error)")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - CAPBridgedPlugin Conformance
|
||||
// This extension makes the plugin conform to CAPBridgedPlugin protocol
|
||||
// which is required for Capacitor to discover and register the plugin
|
||||
@objc extension DailyNotificationPlugin: CAPBridgedPlugin {
|
||||
@objc public var identifier: String {
|
||||
return "com.timesafari.dailynotification"
|
||||
}
|
||||
|
||||
@objc public var jsName: String {
|
||||
return "DailyNotification"
|
||||
}
|
||||
|
||||
@objc public var pluginMethods: [CAPPluginMethod] {
|
||||
var methods: [CAPPluginMethod] = []
|
||||
|
||||
// Core methods
|
||||
methods.append(CAPPluginMethod(name: "configure", returnType: CAPPluginReturnNone))
|
||||
methods.append(CAPPluginMethod(name: "scheduleDailyNotification", returnType: CAPPluginReturnPromise))
|
||||
methods.append(CAPPluginMethod(name: "getLastNotification", returnType: CAPPluginReturnPromise))
|
||||
methods.append(CAPPluginMethod(name: "cancelAllNotifications", returnType: CAPPluginReturnPromise))
|
||||
methods.append(CAPPluginMethod(name: "getNotificationStatus", returnType: CAPPluginReturnPromise))
|
||||
methods.append(CAPPluginMethod(name: "updateSettings", returnType: CAPPluginReturnPromise))
|
||||
|
||||
// Permission methods
|
||||
methods.append(CAPPluginMethod(name: "checkPermissionStatus", returnType: CAPPluginReturnPromise))
|
||||
methods.append(CAPPluginMethod(name: "requestNotificationPermissions", returnType: CAPPluginReturnPromise))
|
||||
|
||||
// Reminder methods
|
||||
methods.append(CAPPluginMethod(name: "scheduleDailyReminder", returnType: CAPPluginReturnPromise))
|
||||
methods.append(CAPPluginMethod(name: "cancelDailyReminder", returnType: CAPPluginReturnPromise))
|
||||
methods.append(CAPPluginMethod(name: "getScheduledReminders", returnType: CAPPluginReturnPromise))
|
||||
methods.append(CAPPluginMethod(name: "updateDailyReminder", returnType: CAPPluginReturnPromise))
|
||||
|
||||
// Dual scheduling methods
|
||||
methods.append(CAPPluginMethod(name: "scheduleContentFetch", returnType: CAPPluginReturnPromise))
|
||||
methods.append(CAPPluginMethod(name: "scheduleUserNotification", returnType: CAPPluginReturnPromise))
|
||||
methods.append(CAPPluginMethod(name: "scheduleDualNotification", returnType: CAPPluginReturnPromise))
|
||||
methods.append(CAPPluginMethod(name: "getDualScheduleStatus", returnType: CAPPluginReturnPromise))
|
||||
|
||||
return methods
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user