Compare commits

...

11 Commits

Author SHA1 Message Date
Andrea Busi 15088b744f release: Increase version for release 2022-12-30 00:18:07 +01:00
Andrea Busi ac03a0cccb refactor: Update translations for tracking permission 2022-12-30 00:17:57 +01:00
Andrea Busi 76a26e3100 release: Increase version for release 2022-12-07 17:56:52 +01:00
Andrea Busi cac6ed67ac feat: Configure AppTracking and Facebook required flags 2022-12-07 09:26:37 +01:00
Andrea Busi 094c682dbd refactor: Reorganize Firebase configuration 2022-12-07 09:26:03 +01:00
Andrea Busi c44f46ca46 refactor: Reorganize push notification configuration 2022-12-07 09:25:38 +01:00
Andrea Busi 5e8c3d0796 release: Increase version fo release 2022-12-06 09:12:53 +01:00
Andrea Busi 61ce27ed4b feat: Enable Facebook SDK in app 2022-12-02 17:33:42 +01:00
Andrea Busi 3aea60e560 dependency: Add Facebook SDK 2022-12-02 15:18:18 +01:00
Andrea Busi 84b61fd7e2 release: Increase version for release 2022-11-28 22:21:51 +01:00
Andrea Busi a5a8c6f5c5 fix: Solve missing critical alerts after notification service migration 2022-11-28 10:33:30 +01:00
16 changed files with 139 additions and 24 deletions
+8
View File
@@ -1,5 +1,13 @@
# Changelog
## Versione 5.4
- Aggiunto SDK Facebook
## Versione 5.3.2
- Corretto problema con notifiche critiche
## Versione 5.3.1
- Ricreato progetto NotificationService
@@ -0,0 +1,10 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.application-groups</key>
<array>
<string>group.com.finazzi.distquake</string>
</array>
</dict>
</plist>
@@ -47,7 +47,7 @@ class NotificationService: UNNotificationServiceExtension {
// !!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
let isCritical = userInfo.bool(forKey: "critical", orDefault: false)
let isCritical = userInfo.integer(forKey: "critical", orDefault: 0) == 1
if isCritical && criticalAlertsEnabled {
bestAttemptContent.sound = UNNotificationSound.criticalSoundNamed(Self.EQNSoundNotification)
} else {
@@ -293,6 +293,7 @@
652C37BC26092B3C0068EC3B /* FiltersViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FiltersViewModel.swift; sourceTree = "<group>"; };
65355FFE25F38D3300BB57D2 /* SegnalazioniMapViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SegnalazioniMapViewController.swift; sourceTree = "<group>"; };
653604E8262348FA00B2B651 /* EQNBaseMapFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EQNBaseMapFilter.swift; sourceTree = "<group>"; };
653B791F2934B6DA00E8FFFB /* EQNNotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = EQNNotificationService.entitlements; sourceTree = "<group>"; };
653C67E125F3CC2E00FE52AC /* EQNCustomAnnotationView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EQNCustomAnnotationView.swift; sourceTree = "<group>"; };
653C67FB25F3D63500FE52AC /* EQNMapAnnotationUserReport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EQNMapAnnotationUserReport.swift; sourceTree = "<group>"; };
653C680325F3DF8A00FE52AC /* EQNBaseMapViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EQNBaseMapViewController.swift; sourceTree = "<group>"; };
@@ -661,6 +662,7 @@
65FFDC93292F672B00EA821B /* EQNNotificationService */ = {
isa = PBXGroup;
children = (
653B791F2934B6DA00E8FFFB /* EQNNotificationService.entitlements */,
65FFDC9F292F70E800EA821B /* Icons */,
65FFDC94292F672B00EA821B /* NotificationService.swift */,
65FFDC96292F672B00EA821B /* Info.plist */,
@@ -1478,6 +1480,9 @@
"${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework",
"${BUILT_PRODUCTS_DIR}/Solar/Solar.framework",
"${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/FBAEMKit/FBAEMKit.framework/FBAEMKit",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/FBSDKCoreKit/FBSDKCoreKit.framework/FBSDKCoreKit",
"${PODS_XCFRAMEWORKS_BUILD_DIR}/FBSDKCoreKit_Basics/FBSDKCoreKit_Basics.framework/FBSDKCoreKit_Basics",
);
name = "[CP] Embed Pods Frameworks";
outputPaths = (
@@ -1492,6 +1497,9 @@
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Solar.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBAEMKit.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSDKCoreKit.framework",
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSDKCoreKit_Basics.framework",
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
@@ -1755,10 +1763,11 @@
buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_OBJC_WEAK = YES;
CODE_SIGN_ENTITLEMENTS = EQNNotificationService/EQNNotificationService.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 102;
CURRENT_PROJECT_VERSION = 107;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = WJA4MR4CPC;
GCC_PREPROCESSOR_DEFINITIONS = (
@@ -1775,7 +1784,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 5.3.1;
MARKETING_VERSION = 5.4;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.finazzi.distquake.notificationservice;
@@ -1796,10 +1805,11 @@
buildSettings = {
CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
CLANG_ENABLE_OBJC_WEAK = YES;
CODE_SIGN_ENTITLEMENTS = EQNNotificationService/EQNNotificationService.entitlements;
CODE_SIGN_IDENTITY = "Apple Distribution";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 102;
CURRENT_PROJECT_VERSION = 107;
DEVELOPMENT_TEAM = "";
"DEVELOPMENT_TEAM[sdk=iphoneos*]" = WJA4MR4CPC;
GENERATE_INFOPLIST_FILE = YES;
@@ -1812,7 +1822,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 5.3.1;
MARKETING_VERSION = 5.4;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = com.finazzi.distquake.notificationservice;
PRODUCT_NAME = "$(TARGET_NAME)";
@@ -1955,7 +1965,7 @@
CODE_SIGN_ENTITLEMENTS = "Earthquake Network/Earthquake Network.entitlements";
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 102;
CURRENT_PROJECT_VERSION = 107;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = WJA4MR4CPC;
@@ -1965,7 +1975,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 5.3.1;
MARKETING_VERSION = 5.4;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@@ -2066,7 +2076,7 @@
CODE_SIGN_ENTITLEMENTS = "Earthquake Network/Earthquake Network.entitlements";
CODE_SIGN_IDENTITY = "Apple Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 102;
CURRENT_PROJECT_VERSION = 107;
DEFINES_MODULE = YES;
DEVELOPMENT_TEAM = WJA4MR4CPC;
GCC_PREFIX_HEADER = "Earthquake Network/Earthquake Network-Prefix.pch";
@@ -2075,7 +2085,7 @@
"$(inherited)",
"@executable_path/Frameworks",
);
MARKETING_VERSION = 5.3.1;
MARKETING_VERSION = 5.4;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@@ -2172,7 +2182,7 @@
CODE_SIGN_ENTITLEMENTS = EQNNotificationContent/EQNNotificationContent.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 102;
CURRENT_PROJECT_VERSION = 107;
DEVELOPMENT_TEAM = WJA4MR4CPC;
INFOPLIST_FILE = EQNNotificationContent/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
@@ -2181,7 +2191,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 5.3.1;
MARKETING_VERSION = 5.4;
PRODUCT_BUNDLE_IDENTIFIER = com.finazzi.distquake.notificationcontent;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "EQNetwork Extension Content - Development";
@@ -2200,7 +2210,7 @@
CODE_SIGN_ENTITLEMENTS = EQNNotificationContent/EQNNotificationContent.entitlements;
CODE_SIGN_IDENTITY = "Apple Distribution";
CODE_SIGN_STYLE = Manual;
CURRENT_PROJECT_VERSION = 102;
CURRENT_PROJECT_VERSION = 107;
DEVELOPMENT_TEAM = WJA4MR4CPC;
INFOPLIST_FILE = EQNNotificationContent/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 12.0;
@@ -2209,7 +2219,7 @@
"@executable_path/Frameworks",
"@executable_path/../../Frameworks",
);
MARKETING_VERSION = 5.3.1;
MARKETING_VERSION = 5.4;
PRODUCT_BUNDLE_IDENTIFIER = com.finazzi.distquake.notificationcontent;
PRODUCT_NAME = "$(TARGET_NAME)";
PROVISIONING_PROFILE_SPECIFIER = "EQNetwork Extension Content - AppStore";
+49 -10
View File
@@ -19,10 +19,12 @@
#import "EQNNotificheReteSismiche.h"
#import "EQNMainTabBarController.h"
@import UserNotifications;
@import AppTrackingTransparency;
@import Firebase;
@import FirebaseCrashlytics;
@import UserNotifications;
@import GoogleMobileAds;
@import FBSDKCoreKit;
@interface AppDelegate () <FIRMessagingDelegate, UNUserNotificationCenterDelegate>
@property (strong, nonatomic) NSArray<id<EQNCommandProtocol>> *commands;
@@ -50,20 +52,14 @@
[EQNUser defaultUser];
[EQNManager defaultManager];
[FIRApp configure];
[FIRMessaging messaging].delegate = self;
[self configureFirebase];
[self configureFacebookSDKWithApplication:application andOptions:launchOptions];
// add some generic logs for Crashlytics
NSString *language = [[NSLocale preferredLanguages] firstObject];
[[FIRCrashlytics crashlytics] setCustomValue:language forKey:@"lang"];
[UNUserNotificationCenter currentNotificationCenter].delegate = self;
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter]
requestAuthorizationWithOptions:authOptions
completionHandler:^(BOOL granted, NSError * _Nullable error) {
[self registraNotifica];
}];
[self configurePushNotifications];
[application setMinimumBackgroundFetchInterval:UIApplicationBackgroundFetchIntervalMinimum];
[application registerForRemoteNotifications];
@@ -197,6 +193,49 @@
[self.mainTabBarController selectSection:section];
}
#pragma mark - Configurations
- (void)configurePushNotifications
{
[UNUserNotificationCenter currentNotificationCenter].delegate = self;
UNAuthorizationOptions authOptions = UNAuthorizationOptionAlert | UNAuthorizationOptionSound | UNAuthorizationOptionBadge;
[[UNUserNotificationCenter currentNotificationCenter] requestAuthorizationWithOptions:authOptions completionHandler:^(BOOL granted, NSError * _Nullable error) {
[self registraNotifica];
[self configureAppTracking];
}];
}
- (void)configureAppTracking
{
if (@available(iOS 14, *)) {
// add a delay otherwise the alert will not be displayed
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
[ATTrackingManager requestTrackingAuthorizationWithCompletionHandler:^(ATTrackingManagerAuthorizationStatus status) {
if (status == ATTrackingManagerAuthorizationStatusAuthorized) {
FBSDKSettings.sharedSettings.isAdvertiserTrackingEnabled = YES;
} else {
FBSDKSettings.sharedSettings.isAdvertiserTrackingEnabled = NO;
}
}];
});
} else {
FBSDKSettings.sharedSettings.isAdvertiserTrackingEnabled = YES;
}
}
- (void)configureFirebase
{
[FIRApp configure];
[FIRMessaging messaging].delegate = self;
}
- (void)configureFacebookSDKWithApplication:(UIApplication *)application andOptions:(NSDictionary *)launchOptions
{
[FBSDKApplicationDelegate.sharedInstance application:application didFinishLaunchingWithOptions:launchOptions];
[FBSDKSettings.sharedSettings setIsAdvertiserIDCollectionEnabled:YES];
[FBSDKSettings.sharedSettings setIsAdvertiserIDCollectionEnabled:YES];
}
#pragma mark - FIRMessagingDelegate
- (void)messaging:(FIRMessaging *)messaging didReceiveRegistrationToken:(NSString *)fcmToken
+26
View File
@@ -78,5 +78,31 @@
</array>
<key>UIUserInterfaceStyle</key>
<string>Light</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLSchemes</key>
<array>
<string>fb1444404982546319</string>
</array>
</dict>
</array>
<key>FacebookAppID</key>
<string>1444404982546319</string>
<key>FacebookClientToken</key>
<string>46c7a338b2bbd2186b2f1c12865b4004</string>
<key>FacebookDisplayName</key>
<string>Earthquake Network</string>
<key>LSApplicationQueriesSchemes</key>
<array>
<string>fbapi</string>
<string>fb-messenger-share-api</string>
</array>
<key>FacebookAutoLogAppEventsEnabled</key>
<true/>
<key>FacebookAdvertiserIDCollectionEnabled</key>
<true/>
<key>NSUserTrackingUsageDescription</key>
<string>Il tracciamento serve a capire se la pubblicità dell'app è efficace</string>
</dict>
</plist>
@@ -4,4 +4,5 @@
"NSPhotoLibraryAddUsageDescription" = "Απαιτείται πρόσβαση στη βιβλιοθήκη για να αποθηκεύσετε τις εικόνες που δημιουργούνται από την εφαρμογή";
"NSCalendarsUsageDescription" = "Απαιτείται πρόσβαση στο ημερολόγιο προκειμένου να σωθούν οι πληροφορίες των σεισμών ενδιαφέροντος";
"NSContactsUsageDescription" = "Απαιτείται πρόσβαση στις επαφές για να προσθέσετε άτομα στα δημιουργημένα συμβάντα";
"NSUserTrackingUsageDescription" = "Η παρακολούθηση χρησιμοποιείται για να κατανοήσουμε εάν η διαφήμιση της εφαρμογής είναι αποτελεσματική";
"CFBundleDisplayName" = "Ανιχνευτής Σεισμών";
@@ -4,4 +4,5 @@
"NSPhotoLibraryAddUsageDescription" = "Access to the library is required in order to save the images generated by the app";
"NSCalendarsUsageDescription" = "Access to the calendar is required in order to save the information of the earthquakes of interest";
"NSContactsUsageDescription" = "Access to contacts is required in order to add people to the created events";
"NSUserTrackingUsageDescription" = "Tracking is used to understand if the advertising of the app is effective";
"CFBundleDisplayName" = "Earthquake Network";
@@ -4,4 +4,5 @@
"NSPhotoLibraryAddUsageDescription" = "Se requiere acceso a la biblioteca para guardar las imágenes generadas por la aplicación";
"NSCalendarsUsageDescription" = "Se requiere acceso al calendario para guardar la información de los terremotos de interés";
"NSContactsUsageDescription" = "Se requiere acceso a los contactos para agregar personas a los eventos creados";
"NSUserTrackingUsageDescription" = "El seguimiento se utiliza para comprender si la publicidad de la aplicación es efectiva";
"CFBundleDisplayName" = "Sismos Detector";
@@ -4,4 +4,5 @@
"NSPhotoLibraryAddUsageDescription" = "L'accès à la bibliothèque est nécessaire pour enregistrer les images générées par l'application";
"NSCalendarsUsageDescription" = "L'accès au calendrier est nécessaire afin de sauvegarder les informations des tremblements de terre d'intérêt";
"NSContactsUsageDescription" = "L'accès aux contacts est requis pour ajouter des personnes aux événements créés";
"NSUserTrackingUsageDescription" = "Le suivi est utilisé pour comprendre si la publicité de l'application est efficace";
"CFBundleDisplayName" = "Détecteur de Séisme";
@@ -4,4 +4,5 @@
"NSPhotoLibraryAddUsageDescription" = "Pristup knjižnici potreban je kako biste spremili slike generirane u aplikaciji";
"NSCalendarsUsageDescription" = "Pristup kalendaru potreban je kako bi se sačuvale informacije o potresima od interesa";
"NSContactsUsageDescription" = "Pristup kontaktima potreban je kako biste dodali ljude u stvorene događaje";
"NSUserTrackingUsageDescription" = "Praćenje se koristi kako bi se shvatilo je li oglašavanje aplikacije učinkovito";
"CFBundleDisplayName" = "Detektor Potresa";
@@ -4,4 +4,5 @@
"NSPhotoLibraryAddUsageDescription" = "Akses ke perpustakaan diperlukan untuk menyimpan gambar yang dihasilkan oleh aplikasi";
"NSCalendarsUsageDescription" = "Akses ke kalender diperlukan untuk menyimpan informasi gempa yang menarik";
"NSContactsUsageDescription" = "Akses ke kontak diperlukan untuk menambahkan orang ke acara yang dibuat";
"NSUserTrackingUsageDescription" = "Pelacakan digunakan untuk memahami apakah iklan aplikasi efektif";
"CFBundleDisplayName" = "Detektor Gempa";
@@ -4,4 +4,5 @@
"NSPhotoLibraryAddUsageDescription" = "L'accesso alla libreria è richiesto per poter salvare le immagini generate dall'app";
"NSCalendarsUsageDescription" = "L'accesso al calendario è richiesto per poter salvare le informazioni dei sismi di interesse";
"NSContactsUsageDescription" = "L'accesso ai contatti è richiesto per poter aggiungere persone agli eventi creati";
"NSUserTrackingUsageDescription" = "Il tracciamento serve a capire se la pubblicità dell'app è efficace";
"CFBundleDisplayName" = "Rilevatore Terremoto";
@@ -4,4 +4,5 @@
"NSPhotoLibraryAddUsageDescription" = "Uygulama tarafından oluşturulan görüntüleri kaydetmek için kitaplığa erişim gereklidir";
"NSCalendarsUsageDescription" = "İlgili depremlere ait bilgilerin kaydedilebilmesi için takvime erişim gereklidir.";
"NSContactsUsageDescription" = "Kişileri oluşturulan etkinliklere eklemek için kişilere erişim gereklidir";
"NSUserTrackingUsageDescription" = "İzleme, uygulamanın reklamının etkili olup olmadığını anlamak için kullanılır";
"CFBundleDisplayName" = "Deprem Ağı";
+1
View File
@@ -8,6 +8,7 @@ target 'Earthquake Network' do
pod 'Firebase/Messaging'
pod 'Firebase/Crashlytics'
pod 'Google-Mobile-Ads-SDK'
pod 'FBSDKCoreKit'
pod 'DZNEmptyDataSet'
pod 'Solar'
end
+14 -1
View File
@@ -1,5 +1,11 @@
PODS:
- DZNEmptyDataSet (1.8.1)
- FBAEMKit (15.1.0):
- FBSDKCoreKit_Basics (= 15.1.0)
- FBSDKCoreKit (15.1.0):
- FBAEMKit (= 15.1.0)
- FBSDKCoreKit_Basics (= 15.1.0)
- FBSDKCoreKit_Basics (15.1.0)
- Firebase/Core (10.1.0):
- Firebase/CoreOnly
- FirebaseAnalytics (~> 10.1.0)
@@ -113,6 +119,7 @@ PODS:
DEPENDENCIES:
- DZNEmptyDataSet
- FBSDKCoreKit
- Firebase/Core
- Firebase/Crashlytics
- Firebase/Messaging
@@ -122,6 +129,9 @@ DEPENDENCIES:
SPEC REPOS:
trunk:
- DZNEmptyDataSet
- FBAEMKit
- FBSDKCoreKit
- FBSDKCoreKit_Basics
- Firebase
- FirebaseAnalytics
- FirebaseCore
@@ -140,6 +150,9 @@ SPEC REPOS:
SPEC CHECKSUMS:
DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7
FBAEMKit: c7f82b5145d446bcbbcd50485c032689032fc6a2
FBSDKCoreKit: 7542746fc63a2a38dd6a865eeb54268341f37b83
FBSDKCoreKit_Basics: 92d6b26c0bed30ab09bbdd96dccaa26e6c9978d1
Firebase: 444b35a9c568a516666213c2f6cccd10cb12559f
FirebaseAnalytics: 24cb27b52b2e11ad5013528195b4ca0755dec960
FirebaseCore: 55e7ae35991ccca4db03ff8d8df6ed5f17a3e4c7
@@ -156,6 +169,6 @@ SPEC CHECKSUMS:
PromisesObjC: ab77feca74fa2823e7af4249b8326368e61014cb
Solar: 2dc6e7cc39186cb0c8228fa08df76fb50c7d8f24
PODFILE CHECKSUM: dd5131b6d7a83fb7c22ecc161ed4fc143eda0ac1
PODFILE CHECKSUM: 8ea8b5074e46a5d9288cef7a482f8c5bebe2d6e2
COCOAPODS: 1.11.3