diff options
author | Paul Beusterien <paulbeusterien@google.com> | 2017-05-15 12:27:07 -0700 |
---|---|---|
committer | Paul Beusterien <paulbeusterien@google.com> | 2017-05-15 12:27:07 -0700 |
commit | 98ba64449a632518bd2b86fe8d927f4a960d3ddc (patch) | |
tree | 131d9c4272fa6179fcda6c5a33fcb3b1bd57ad2e /Example/Shared | |
parent | 32461366c9e204a527ca05e6e9b9404a2454ac51 (diff) |
Initial
Diffstat (limited to 'Example/Shared')
21 files changed, 258 insertions, 0 deletions
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 <UIKit/UIKit.h> + +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 <SafariServices/SafariServices.h> + +// 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 Binary files differnew file mode 100644 index 0000000..edc9400 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76.png 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 Binary files differnew file mode 100644 index 0000000..a8be9e3 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76@2x.png 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 Binary files differnew file mode 100644 index 0000000..e56fdc8 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-83.5@2x.png diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification.png Binary files differnew file mode 100644 index 0000000..bd7df97 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification.png 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 Binary files differnew file mode 100644 index 0000000..8334506 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification@2x.png diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings.png Binary files differnew file mode 100644 index 0000000..6fe0542 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings.png 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 Binary files differnew file mode 100644 index 0000000..2906484 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings@2x.png diff --git a/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight.png b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight.png Binary files differnew file mode 100644 index 0000000..8334506 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight.png 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 Binary files differnew file mode 100644 index 0000000..bb34c9a --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight@2x.png 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 Binary files differnew file mode 100644 index 0000000..dbf3007 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@2x.png 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 Binary files differnew file mode 100644 index 0000000..4e23f57 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@3x.png 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 Binary files differnew file mode 100644 index 0000000..8334506 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@2x.png 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 Binary files differnew file mode 100644 index 0000000..13eb060 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@3x.png 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 Binary files differnew file mode 100644 index 0000000..2906484 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@2x.png 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 Binary files differnew file mode 100644 index 0000000..a415097 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@3x.png 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 Binary files differnew file mode 100644 index 0000000..bb34c9a --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@2x.png 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 Binary files differnew file mode 100644 index 0000000..dbf3007 --- /dev/null +++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@3x.png 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 |