@@ -6,6 +6,7 @@ import 'dart:isolate';
66import 'package:firebase_messaging/firebase_messaging.dart' ;
77import 'package:flutter_local_notifications/flutter_local_notifications.dart' ;
88import 'package:http/http.dart' as http;
9+ import 'package:flutter_apns_only/flutter_apns_only.dart' ;
910
1011enum AndroidVisibility {
1112 /// Show the notification on all lockscreens, but conceal sensitive or private information on secure lockscreens.
@@ -87,19 +88,20 @@ class AndroidChannel {
8788}
8889
8990class IOSPermissions {
90- final bool ? alert;
91- final bool ? badge;
92- final bool ? sound;
93- final bool ? critical;
91+ final bool alert;
92+ final bool badge;
93+ final bool sound;
94+ final bool ? critical; // ?
9495 const IOSPermissions ({
95- this .alert,
96- this .badge,
97- this .sound,
96+ this .alert = true ,
97+ this .badge = true ,
98+ this .sound = true ,
9899 this .critical,
99100 });
100101}
101102
102103String ? fcmToken;
104+ String ? apnsToken;
103105
104106final FlutterLocalNotificationsPlugin _flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin ();
105107AndroidChannel ? _androidChannel;
@@ -327,3 +329,37 @@ Future<void> registerAndroidPushNotificationHandlers(AndroidChannel androidChann
327329 FirebaseMessaging .onBackgroundMessage (_onFCMBackgroundMessage);
328330}
329331
332+ Future <void > _onPush (String name, ApnsRemoteMessage message) async {
333+ final payload = message.payload;
334+ print ('📘 _onPush $name : ${payload ["notification" ]?["title" ]}' );
335+
336+ final action = UNNotificationAction .getIdentifier (payload['data' ]);
337+
338+ if (action != null && action != UNNotificationAction .defaultIdentifier) {
339+ print ('📘 _onPush action: $action ' );
340+ }
341+ }
342+
343+ Future <void > registerIOSPushNotificationHandlers (IOSPermissions iosPermissions) async {
344+ final connector = ApnsPushConnectorOnly ();
345+
346+ connector.configureApns (
347+ onLaunch: (data) => _onPush ('onLaunch' , data),
348+ onResume: (data) => _onPush ('onResume' , data),
349+ onMessage: (data) => _onPush ('onMessage' , data),
350+ onBackgroundMessage: (data) => _onPush ('onBackgroundMessage' , data),
351+ );
352+
353+ connector.token.addListener (() {
354+ print ('📘 apns token refresh: ${connector .token .value }' );
355+
356+ apnsToken = connector.token.value;
357+ });
358+
359+ connector.requestNotificationPermissions (IosNotificationSettings (
360+ sound: iosPermissions.sound,
361+ alert: iosPermissions.alert,
362+ badge: iosPermissions.badge,
363+ ));
364+ }
365+
0 commit comments