aboutsummaryrefslogtreecommitdiffhomepage
path: root/Example/Shared
diff options
context:
space:
mode:
authorGravatar Paul Beusterien <paulbeusterien@google.com>2017-05-15 12:27:07 -0700
committerGravatar Paul Beusterien <paulbeusterien@google.com>2017-05-15 12:27:07 -0700
commit98ba64449a632518bd2b86fe8d927f4a960d3ddc (patch)
tree131d9c4272fa6179fcda6c5a33fcb3b1bd57ad2e /Example/Shared
parent32461366c9e204a527ca05e6e9b9404a2454ac51 (diff)
Initial
Diffstat (limited to 'Example/Shared')
-rw-r--r--Example/Shared/FIRSampleAppUtilities.h26
-rw-r--r--Example/Shared/FIRSampleAppUtilities.m113
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Contents.json113
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76.pngbin0 -> 4830 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76@2x.pngbin0 -> 9882 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-83.5@2x.pngbin0 -> 11532 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification.pngbin0 -> 1806 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification@2x.pngbin0 -> 2811 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings.pngbin0 -> 2233 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings@2x.pngbin0 -> 3777 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight.pngbin0 -> 2811 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight@2x.pngbin0 -> 4995 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@2x.pngbin0 -> 7563 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@3x.pngbin0 -> 12489 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@2x.pngbin0 -> 2811 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@3x.pngbin0 -> 3942 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@2x.pngbin0 -> 3777 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@3x.pngbin0 -> 5588 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@2x.pngbin0 -> 4995 bytes
-rw-r--r--Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@3x.pngbin0 -> 7563 bytes
-rw-r--r--Example/Shared/Shared.xcassets/Contents.json6
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
new file mode 100644
index 0000000..edc9400
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-76@2x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-83.5@2x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Notification@2x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Settings@2x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Pad-Spotlight@2x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@2x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-60@3x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@2x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Notification@3x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@2x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Settings@3x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@2x.png
Binary files 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
--- /dev/null
+++ b/Example/Shared/Shared.xcassets/AppIcon.appiconset/Icon-Phone-Spotlight@3x.png
Binary files 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