/
githubmirror
/
omim
Обзор
Документация
Войти
/
githubmirror
/
omim
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
iphone/Maps/Core/Notifications/LocalNotificationManager.mm
68 строк
2 KB
Maxim Pimenov
[omim] Replaced boost::optional with std::optional.
26 дек 2019, 16:57
26 дек 2019, 16:57
01fdd7f
Код
Авторство
О чём код?
#import "LocalNotificationManager.h" #import "CoreNotificationWrapper+Core.h" #import "NSDate+TimeDistance.h" #import "Statistics.h" #include "map/framework_light.hpp" #include "map/framework_light_delegate.hpp" #include "platform/network_policy_ios.h" #include <CoreApi/Framework.h> static NSString * const kLastUGCNotificationDate = @"LastUGCNotificationDate"; @implementation LocalNotificationManager + (BOOL)shouldShowAuthNotification { if (!network_policy::CanUseNetwork()) return NO; if (NSDate * date = [[NSUserDefaults standardUserDefaults] objectForKey:kLastUGCNotificationDate]) { if (date.daysToNow <= 5) return NO; } using namespace lightweight; lightweight::Framework const f(REQUEST_TYPE_NUMBER_OF_UNSENT_UGC | REQUEST_TYPE_USER_AUTH_STATUS); if (f.IsUserAuthenticated() || f.GetNumberOfUnsentUGC() < 2) return NO; return YES; } + (void)authNotificationWasShown { auto ud = [NSUserDefaults standardUserDefaults]; [ud setObject:[NSDate date] forKey:kLastUGCNotificationDate]; [ud synchronize]; [Statistics logEvent:@"UGC_UnsentNotification_shown"]; } + (CoreNotificationWrapper *)reviewNotificationWrapper { lightweight::Framework framework(lightweight::REQUEST_TYPE_NOTIFICATION); framework.SetDelegate(std::make_unique<FrameworkLightDelegate>(GetFramework())); auto const notificationCandidate = framework.GetNotification(); if (notificationCandidate) { auto const notification = *notificationCandidate; if (notification.GetType() == notifications::NotificationCandidate::Type::UgcReview) { CoreNotificationWrapper * w = [[CoreNotificationWrapper alloc] initWithNotificationCandidate:notification]; return w; } } return nil; } + (void)reviewNotificationWasShown { [Statistics logEvent:kStatUGCReviewNotificationShown]; } @end