From 98ba64449a632518bd2b86fe8d927f4a960d3ddc Mon Sep 17 00:00:00 2001 From: Paul Beusterien Date: Mon, 15 May 2017 12:27:07 -0700 Subject: Initial --- Example/Shared/FIRSampleAppUtilities.h | 26 +++++ Example/Shared/FIRSampleAppUtilities.m | 113 +++++++++++++++++++++ .../AppIcon.appiconset/Contents.json | 113 +++++++++++++++++++++ .../AppIcon.appiconset/Icon-Pad-76.png | Bin 0 -> 4830 bytes .../AppIcon.appiconset/Icon-Pad-76@2x.png | Bin 0 -> 9882 bytes .../AppIcon.appiconset/Icon-Pad-83.5@2x.png | Bin 0 -> 11532 bytes .../AppIcon.appiconset/Icon-Pad-Notification.png | Bin 0 -> 1806 bytes .../Icon-Pad-Notification@2x.png | Bin 0 -> 2811 bytes .../AppIcon.appiconset/Icon-Pad-Settings.png | Bin 0 -> 2233 bytes .../AppIcon.appiconset/Icon-Pad-Settings@2x.png | Bin 0 -> 3777 bytes .../AppIcon.appiconset/Icon-Pad-Spotlight.png | Bin 0 -> 2811 bytes .../AppIcon.appiconset/Icon-Pad-Spotlight@2x.png | Bin 0 -> 4995 bytes .../AppIcon.appiconset/Icon-Phone-60@2x.png | Bin 0 -> 7563 bytes .../AppIcon.appiconset/Icon-Phone-60@3x.png | Bin 0 -> 12489 bytes .../Icon-Phone-Notification@2x.png | Bin 0 -> 2811 bytes .../Icon-Phone-Notification@3x.png | Bin 0 -> 3942 bytes .../AppIcon.appiconset/Icon-Phone-Settings@2x.png | Bin 0 -> 3777 bytes .../AppIcon.appiconset/Icon-Phone-Settings@3x.png | Bin 0 -> 5588 bytes .../AppIcon.appiconset/Icon-Phone-Spotlight@2x.png | Bin 0 -> 4995 bytes .../AppIcon.appiconset/Icon-Phone-Spotlight@3x.png | Bin 0 -> 7563 bytes Example/Shared/Shared.xcassets/Contents.json | 6 ++ 21 files changed, 258 insertions(+) create mode 100644 Example/Shared/FIRSampleAppUtilities.h create mode 100644 Example/Shared/FIRSampleAppUtilities.m create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Contents.json create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76@2x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-83.5@2x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification@2x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings@2x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight@2x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@2x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@3x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@2x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@3x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@2x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@3x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@2x.png create mode 100644 Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@3x.png create mode 100644 Example/Shared/Shared.xcassets/Contents.json (limited to 'Example/Shared') diff --git a/Example/Shared/FIRSampleAppUtilities.h b/Example/Shared/FIRSampleAppUtilities.h new file mode 100644 index 0000000..891c2b6 --- /dev/null +++ b/Example/Shared/FIRSampleAppUtilities.h @@ -0,0 +1,26 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import + +NS_SWIFT_NAME(SampleAppUtilities) +@interface FIRSampleAppUtilities : NSObject + ++ (BOOL)appContainsRealServiceInfoPlist; ++ (void)presentAlertForInvalidServiceInfoPlistFromViewController:(UIViewController *) + viewController NS_SWIFT_NAME(presentAlertForInvalidServiceInfoPlistFrom(_:)); + +@end diff --git a/Example/Shared/FIRSampleAppUtilities.m b/Example/Shared/FIRSampleAppUtilities.m new file mode 100644 index 0000000..a0a4794 --- /dev/null +++ b/Example/Shared/FIRSampleAppUtilities.m @@ -0,0 +1,113 @@ +/* + * Copyright 2017 Google + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "FIRSampleAppUtilities.h" + +#import + +// Plist file name. +NSString *const kServiceInfoFileName = @"GoogleService-Info"; +// Plist file type. +NSString *const kServiceInfoFileType = @"plist"; +// GOOGLE_APP_ID key +NSString *const kGoogleAppIDPlistKey = @"GOOGLE_APP_ID"; +// Dummy plist GOOGLE_APP_ID +NSString *const kDummyGoogleAppID = @"1:123:ios:123abc"; +// Github Repo URL String +NSString *const kGithubRepoURLString = @"https://github.com/firebase/firebase-ios-sdk/"; +// Alert contents +NSString *const kInvalidPlistAlertTitle = @"GoogleService-Info.plist"; +NSString *const kInvalidPlistAlertMessage = @"This sample app needs to be updated with a valid " + @"GoogleService-Info.plist file in order to configure " + @"Firebase.\n\n" + @"Please update the app with a valid plist file, " + @"following the instructions in the Firebase Github " + @"repository at: %@"; + +@implementation FIRSampleAppUtilities + ++ (BOOL)appContainsRealServiceInfoPlist { + static BOOL containsRealServiceInfoPlist = NO; + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + NSBundle *bundle = [NSBundle mainBundle]; + containsRealServiceInfoPlist = [self containsRealServiceInfoPlistInBundle:bundle]; + }); + return containsRealServiceInfoPlist; +} + ++ (BOOL)containsRealServiceInfoPlistInBundle:(NSBundle *)bundle { + NSString *bundlePath = bundle.bundlePath; + if (!bundlePath.length) { + return NO; + } + + NSString *plistFilePath = [bundle pathForResource:kServiceInfoFileName + ofType:kServiceInfoFileType]; + if (!plistFilePath.length) { + return NO; + } + + NSDictionary *plist = [NSDictionary dictionaryWithContentsOfFile:plistFilePath]; + if (!plist) { + return NO; + } + + // Perform a very naive validation by checking to see if the plist has the dummy google app id + NSString *googleAppID = plist[kGoogleAppIDPlistKey]; + if (!googleAppID.length) { + return NO; + } + if ([googleAppID isEqualToString:kDummyGoogleAppID]) { + return NO; + } + + return YES; +} + ++ (void)presentAlertForInvalidServiceInfoPlistFromViewController:(UIViewController *) + viewController { + NSString *message = [NSString stringWithFormat:kInvalidPlistAlertMessage, kGithubRepoURLString]; + UIAlertController *alertController = + [UIAlertController alertControllerWithTitle:kInvalidPlistAlertTitle + message:message + preferredStyle:UIAlertControllerStyleAlert]; + UIAlertAction *viewReadmeAction = + [UIAlertAction actionWithTitle:@"View Github" + style:UIAlertActionStyleDefault + handler:^(UIAlertAction * _Nonnull action) { + NSURL *githubURL = [NSURL URLWithString:kGithubRepoURLString]; + [FIRSampleAppUtilities navigateToURL:githubURL fromViewController:viewController]; + + }]; + [alertController addAction:viewReadmeAction]; + + UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"Close" style:UIAlertActionStyleCancel handler:nil]; + [alertController addAction:cancelAction]; + + [viewController presentViewController:alertController animated:YES completion:nil]; +} + ++ (void)navigateToURL:(NSURL *)url fromViewController:(UIViewController *)viewController { + if ([SFSafariViewController class]) { + SFSafariViewController *safariController = [[SFSafariViewController alloc] initWithURL:url]; + [viewController showDetailViewController:safariController sender:nil]; + } else { + [[UIApplication sharedApplication] openURL:url]; + } +} + +@end diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Contents.json b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Contents.json new file mode 100644 index 0000000..f659eef --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Contents.json @@ -0,0 +1,113 @@ +{ + "images" : [ + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-Phone-Notification@2x.png", + "scale" : "2x" + }, + { + "size" : "20x20", + "idiom" : "iphone", + "filename" : "Icon-Phone-Notification@3x.png", + "scale" : "3x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-Phone-Settings@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "iphone", + "filename" : "Icon-Phone-Settings@3x.png", + "scale" : "3x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-Phone-Spotlight@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "iphone", + "filename" : "Icon-Phone-Spotlight@3x.png", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-Phone-60@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "Icon-Phone-60@3x.png", + "scale" : "3x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-Pad-Notification.png", + "scale" : "1x" + }, + { + "size" : "20x20", + "idiom" : "ipad", + "filename" : "Icon-Pad-Notification@2x.png", + "scale" : "2x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-Pad-Settings.png", + "scale" : "1x" + }, + { + "size" : "29x29", + "idiom" : "ipad", + "filename" : "Icon-Pad-Settings@2x.png", + "scale" : "2x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-Pad-Spotlight.png", + "scale" : "1x" + }, + { + "size" : "40x40", + "idiom" : "ipad", + "filename" : "Icon-Pad-Spotlight@2x.png", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-Pad-76.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "Icon-Pad-76@2x.png", + "scale" : "2x" + }, + { + "size" : "83.5x83.5", + "idiom" : "ipad", + "filename" : "Icon-Pad-83.5@2x.png", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + }, + "properties" : { + "pre-rendered" : true + } +} \ No newline at end of file diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76.png new file mode 100644 index 0000000..edc9400 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76@2x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76@2x.png new file mode 100644 index 0000000..a8be9e3 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76@2x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-83.5@2x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-83.5@2x.png new file mode 100644 index 0000000..e56fdc8 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-83.5@2x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification.png new file mode 100644 index 0000000..bd7df97 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification@2x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification@2x.png new file mode 100644 index 0000000..8334506 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification@2x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings.png new file mode 100644 index 0000000..6fe0542 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings@2x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings@2x.png new file mode 100644 index 0000000..2906484 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings@2x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight.png new file mode 100644 index 0000000..8334506 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight@2x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight@2x.png new file mode 100644 index 0000000..bb34c9a Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight@2x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@2x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@2x.png new file mode 100644 index 0000000..dbf3007 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@2x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@3x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@3x.png new file mode 100644 index 0000000..4e23f57 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@3x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@2x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@2x.png new file mode 100644 index 0000000..8334506 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@2x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@3x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@3x.png new file mode 100644 index 0000000..13eb060 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@3x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@2x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@2x.png new file mode 100644 index 0000000..2906484 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@2x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@3x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@3x.png new file mode 100644 index 0000000..a415097 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@3x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@2x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@2x.png new file mode 100644 index 0000000..bb34c9a Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@2x.png differ diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@3x.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@3x.png new file mode 100644 index 0000000..dbf3007 Binary files /dev/null and b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@3x.png differ diff --git a/Example/Shared/Shared.xcassets/Contents.json b/Example/Shared/Shared.xcassets/Contents.json new file mode 100644 index 0000000..da4a164 --- /dev/null +++ b/Example/Shared/Shared.xcassets/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file -- cgit v1.2.3