feat: Handle critical notifications in payload extension, due to FCM legacy api limitation

This commit is contained in:
Andrea Busi
2021-02-27 18:06:06 +01:00
parent e806d1caf0
commit 9166fcc59b
@@ -28,7 +28,6 @@ static NSString * const EQNSoundNotificationEQN = @"alert_sound.wav";
UNMutableNotificationContent* content = [[UNMutableNotificationContent alloc] init];
content.title = [NSString localizedUserNotificationStringForKey:request.content.title arguments:nil];
content.body = [NSString localizedUserNotificationStringForKey:request.content.body arguments:nil];
content.sound = [UNNotificationSound defaultSound];
self.bestAttemptContent.title = content.title;
self.bestAttemptContent.body = content.body;
@@ -44,9 +43,16 @@ static NSString * const EQNSoundNotificationEQN = @"alert_sound.wav";
NSString *iconName = @"";
if ([notificationType isEqualToString:@"eqn"]) {
UNNotificationSound *sound = [UNNotificationSound soundNamed:EQNSoundNotificationEQN];
self.bestAttemptContent.sound = sound;
// !!WORKAROUND
// this is a workaround to use critical alerts with legacy FCM api
// when the server implementation will be migrated to Firebase v1 APIs, this could be removed
BOOL isCritical = [[userInfo objectForKey:@"critical"] boolValue];
if (isCritical) {
self.bestAttemptContent.sound = [UNNotificationSound criticalSoundNamed:EQNSoundNotificationEQN withAudioVolume:1.0];
} else {
self.bestAttemptContent.sound = [UNNotificationSound soundNamed:EQNSoundNotificationEQN];
}
NSString *intensity = [userInfo objectForKey:@"intensity"];
switch ([intensity intValue]) {
case 0: