initialize static method
Implementation
static Future<void> initialize({
required Function(Map<String, dynamic>) onMessageReceived,
required Function(String?, String?) onNotificationClick,
required Function(String, String?, String?) onNotificationActionClick,
}) async {
// Get callback handle for background execution
final CallbackHandle? handle = PluginUtilities.getCallbackHandle(appticsBackgroundCallbackDispatcher);
if (handle == null) {
throw Exception('Could not get callback handle for background execution');
}
// Set up foreground message handling
_channel.setMethodCallHandler((call) async {
switch (call.method) {
case 'onMessageReceived':
final dynamic payloadData = call.arguments['payload'];
final Map<String, dynamic> payload;
if (payloadData is String) {
// Parse JSON string to Map
payload = Map<String, dynamic>.from(json.decode(payloadData));
} else if (payloadData is Map) {
// Convert Map to Map<String, dynamic>
payload = Map<String, dynamic>.from(payloadData);
} else {
// Fallback for other types
payload = <String, dynamic>{};
}
onMessageReceived(payload);
break;
case 'onNotificationClick':
final String? clickAction = call.arguments['clickAction'];
final String? payload = call.arguments['payload'];
onNotificationClick(clickAction, payload);
break;
case 'onNotificationActionClick':
final String actionId = call.arguments['actionId'];
final String? clickAction = call.arguments['clickAction'];
final String? payload = call.arguments['payload'];
onNotificationActionClick(actionId, clickAction, payload);
break;
}
});
final CallbackHandle? onMessageHandle;
final int callbackHandleNumber;
if (_backgroundOnMessageHandler != null) {
onMessageHandle =
PluginUtilities.getCallbackHandle(_backgroundOnMessageHandler!);
callbackHandleNumber = onMessageHandle!.toRawHandle();
} else {
callbackHandleNumber = 0;
}
final CallbackHandle? notificationClickHandle;
final int notificationClickHandleNumber;
if (_backgroundNotificationClickHandler != null) {
notificationClickHandle =
PluginUtilities.getCallbackHandle(_backgroundNotificationClickHandler!);
notificationClickHandleNumber = notificationClickHandle!.toRawHandle();
} else {
notificationClickHandleNumber = 0;
}
final CallbackHandle? notificationActionClickHandle;
final int notificationActionClickHandleNumber;
if (_backgroundNotificationActionClickHandler != null) {
notificationActionClickHandle = PluginUtilities.getCallbackHandle(_backgroundNotificationActionClickHandler!);
notificationActionClickHandleNumber = notificationActionClickHandle!.toRawHandle();
} else {
notificationActionClickHandleNumber = 0;
}
// Initialize with callback handle
await _channel.invokeMethod('initialize', {
'callbackHandle': handle.toRawHandle(),
'onMessageHandle': callbackHandleNumber,
'notificationClickHandler': notificationClickHandleNumber,
'notificationActionClickHandler': notificationActionClickHandleNumber
});
}