items upload/download almost complete

This commit is contained in:
Okechi Onyeje 2016-06-02 20:43:49 -04:00
parent a1a98f50b5
commit 7593ac1e0d
385 changed files with 5008 additions and 22616 deletions

View File

@ -9,6 +9,7 @@ target 'Vendoo' do
pod 'PicoKit' pod 'PicoKit'
pod 'Firebase', '>= 2.5.0' pod 'Firebase', '>= 2.5.0'
pod 'FirebaseAuth' pod 'FirebaseAuth'
pod 'Firebase/Database'
pod 'Locksmith' pod 'Locksmith'
# pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git' # pod 'SwiftyJSON', :git => 'https://github.com/SwiftyJSON/SwiftyJSON.git'
pod 'Alamofire-SwiftyJSON' pod 'Alamofire-SwiftyJSON'
@ -17,6 +18,8 @@ target 'Vendoo' do
pod 'FBSDKCoreKit' pod 'FBSDKCoreKit'
pod 'FBSDKLoginKit' pod 'FBSDKLoginKit'
pod 'FBSDKShareKit' pod 'FBSDKShareKit'
pod 'Firebase/Storage'
target 'VendooTests' do target 'VendooTests' do
inherit! :search_paths inherit! :search_paths

View File

@ -39,12 +39,18 @@ PODS:
- FBSDKCoreKit - FBSDKCoreKit
- FBSDKShareKit (4.12.0): - FBSDKShareKit (4.12.0):
- FBSDKCoreKit - FBSDKCoreKit
- Firebase (3.2.0): - Firebase (3.2.1):
- Firebase/Core (= 3.2.0) - Firebase/Core (= 3.2.1)
- Firebase/Analytics (3.2.0): - Firebase/Analytics (3.2.1):
- FirebaseAnalytics (= 3.2.0) - FirebaseAnalytics (= 3.2.0)
- Firebase/Core (3.2.0): - Firebase/Core (3.2.1):
- Firebase/Analytics (= 3.2.0) - Firebase/Analytics (= 3.2.1)
- Firebase/Database (3.2.1):
- Firebase/Analytics (= 3.2.1)
- FirebaseDatabase (= 3.0.1)
- Firebase/Storage (3.2.1):
- Firebase/Analytics (= 3.2.1)
- FirebaseStorage (= 1.0.1)
- FirebaseAnalytics (3.2.0): - FirebaseAnalytics (3.2.0):
- FirebaseInstanceID (~> 1.0) - FirebaseInstanceID (~> 1.0)
- GoogleInterchangeUtilities (~> 1.2) - GoogleInterchangeUtilities (~> 1.2)
@ -54,7 +60,12 @@ PODS:
- FirebaseAnalytics (~> 3.2) - FirebaseAnalytics (~> 3.2)
- GoogleNetworkingUtilities (~> 1.2) - GoogleNetworkingUtilities (~> 1.2)
- GoogleUtilities (~> 1.3) - GoogleUtilities (~> 1.3)
- FirebaseDatabase (3.0.1):
- FirebaseAnalytics (~> 3.2)
- FirebaseInstanceID (1.0.6) - FirebaseInstanceID (1.0.6)
- FirebaseStorage (1.0.1):
- FirebaseAnalytics (~> 3.2)
- GoogleNetworkingUtilities (~> 1.2)
- GDataXML-HTML (1.3.0) - GDataXML-HTML (1.3.0)
- GoogleInterchangeUtilities (1.2.1): - GoogleInterchangeUtilities (1.2.1):
- GoogleSymbolUtilities (~> 1.0) - GoogleSymbolUtilities (~> 1.0)
@ -87,6 +98,8 @@ DEPENDENCIES:
- FBSDKLoginKit - FBSDKLoginKit
- FBSDKShareKit - FBSDKShareKit
- Firebase (>= 2.5.0) - Firebase (>= 2.5.0)
- Firebase/Database
- Firebase/Storage
- FirebaseAuth - FirebaseAuth
- Locksmith - Locksmith
- OAuthSwift (~> 0.5.0) - OAuthSwift (~> 0.5.0)
@ -102,10 +115,12 @@ SPEC CHECKSUMS:
FBSDKCoreKit: 6e56d5a2a64a755ad4efb5dbeee8f82fb1b99775 FBSDKCoreKit: 6e56d5a2a64a755ad4efb5dbeee8f82fb1b99775
FBSDKLoginKit: 03f68a8d48c2c8bb81d7eb8097973d483543e1f6 FBSDKLoginKit: 03f68a8d48c2c8bb81d7eb8097973d483543e1f6
FBSDKShareKit: df1491f064cffc8ebcc3fc8b71be94cc190c728e FBSDKShareKit: df1491f064cffc8ebcc3fc8b71be94cc190c728e
Firebase: 6d4012da1598732a2b43f16d8355eca90f94ed59 Firebase: 6c80ac28d59d06bfd9152a7b6ea17625ca93183d
FirebaseAnalytics: 6f75b04e6bfb8e0b6e9ef298e04c24eea3b13863 FirebaseAnalytics: 6f75b04e6bfb8e0b6e9ef298e04c24eea3b13863
FirebaseAuth: 94b851fc345ce98036dfedfdc2eddeaef8fa3b4c FirebaseAuth: 94b851fc345ce98036dfedfdc2eddeaef8fa3b4c
FirebaseDatabase: 34301d11621a83546f39f670d256477ba6f7fcea
FirebaseInstanceID: d014d574053a2fe84478f12f7bae96979e7051bb FirebaseInstanceID: d014d574053a2fe84478f12f7bae96979e7051bb
FirebaseStorage: e9c32a8d246c07eeefd78180c22736aa1b81e81b
GDataXML-HTML: 7adc03668cab35c288f1dbb8929a179f0fece898 GDataXML-HTML: 7adc03668cab35c288f1dbb8929a179f0fece898
GoogleInterchangeUtilities: def8415a862effc67d549d5b5b0b9c7a2f97d4de GoogleInterchangeUtilities: def8415a862effc67d549d5b5b0b9c7a2f97d4de
GoogleNetworkingUtilities: 3e83269048cfb498dc7ec83ab36813360965c74f GoogleNetworkingUtilities: 3e83269048cfb498dc7ec83ab36813360965c74f
@ -116,6 +131,6 @@ SPEC CHECKSUMS:
PicoKit: 9079bce659a8d5408c8af1c45254b971df614de3 PicoKit: 9079bce659a8d5408c8af1c45254b971df614de3
SwiftyJSON: 04ccea08915aa0109039157c7974cf0298da292a SwiftyJSON: 04ccea08915aa0109039157c7974cf0298da292a
PODFILE CHECKSUM: e5c9f5e7183188f117de0f8635164df8a5f04bf6 PODFILE CHECKSUM: f8828d1dfcf5c8b23e97047fec86e244c81c27ac
COCOAPODS: 1.0.0 COCOAPODS: 1.0.0

View File

@ -1,34 +0,0 @@
# How to become a contributor and submit your own code
## Contributor License Agreements
We'd love to accept your sample apps and patches! Before we can take them, we
have to jump a couple of legal hurdles.
Please fill out either the individual or corporate Contributor License Agreement
(CLA).
* If you are an individual writing original source code and you're sure you
own the intellectual property, then you'll need to sign an [individual CLA]
(http://code.google.com/legal/individual-cla-v1.0.html).
* If you work for a company that wants to allow you to contribute your work,
then you'll need to sign a [corporate CLA]
(http://code.google.com/legal/corporate-cla-v1.0.html).
Follow either of the two links above to access the appropriate CLA and
instructions for how to sign and return it. Once we receive it, we'll be able to
accept your pull requests.
## Contributing a Patch
1. Sign a Contributor License Agreement, if you have not yet done so (see
details above).
1. Create your change to the repo in question.
* Fork the desired repo, develop and test your code changes.
* Ensure that your code is clear and comprehensible.
* Ensure that your code has an appropriate set of unit tests which all pass.
1. Submit a pull request.
1. The repo owner will review your request. If it is approved, the change will
be merged. If it needs additional work, the repo owner will respond with
useful comments.

View File

@ -1,191 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and
distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the copyright
owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other entities
that control, are controlled by, or are under common control with that entity.
For the purposes of this definition, "control" means (i) the power, direct or
indirect, to cause the direction or management of such entity, whether by
contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising
permissions granted by this License.
"Source" form shall mean the preferred form for making modifications, including
but not limited to software source code, documentation source, and configuration
files.
"Object" form shall mean any form resulting from mechanical transformation or
translation of a Source form, including but not limited to compiled object code,
generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form, made
available under the License, as indicated by a copyright notice that is included
in or attached to the work (an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object form, that
is based on (or derived from) the Work and for which the editorial revisions,
annotations, elaborations, or other modifications represent, as a whole, an
original work of authorship. For the purposes of this License, Derivative Works
shall not include works that remain separable from, or merely link (or bind by
name) to the interfaces of, the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including the original version
of the Work and any modifications or additions to that Work or Derivative Works
thereof, that is intentionally submitted to Licensor for inclusion in the Work
by the copyright owner or by an individual or Legal Entity authorized to submit
on behalf of the copyright owner. For the purposes of this definition,
"submitted" means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems, and
issue tracking systems that are managed by, or on behalf of, the Licensor for
the purpose of discussing and improving the Work, but excluding communication
that is conspicuously marked or otherwise designated in writing by the copyright
owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf
of whom a Contribution has been received by Licensor and subsequently
incorporated within the Work.
2. Grant of Copyright License.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the Work and such
Derivative Works in Source or Object form.
3. Grant of Patent License.
Subject to the terms and conditions of this License, each Contributor hereby
grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
irrevocable (except as stated in this section) patent license to make, have
made, use, offer to sell, sell, import, and otherwise transfer the Work, where
such license applies only to those patent claims licensable by such Contributor
that are necessarily infringed by their Contribution(s) alone or by combination
of their Contribution(s) with the Work to which such Contribution(s) was
submitted. If You institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
Contribution incorporated within the Work constitutes direct or contributory
patent infringement, then any patent licenses granted to You under this License
for that Work shall terminate as of the date such litigation is filed.
4. Redistribution.
You may reproduce and distribute copies of the Work or Derivative Works thereof
in any medium, with or without modifications, and in Source or Object form,
provided that You meet the following conditions:
You must give any other recipients of the Work or Derivative Works a copy of
this License; and
You must cause any modified files to carry prominent notices stating that You
changed the files; and
You must retain, in the Source form of any Derivative Works that You distribute,
all copyright, patent, trademark, and attribution notices from the Source form
of the Work, excluding those notices that do not pertain to any part of the
Derivative Works; and
If the Work includes a "NOTICE" text file as part of its distribution, then any
Derivative Works that You distribute must include a readable copy of the
attribution notices contained within such NOTICE file, excluding those notices
that do not pertain to any part of the Derivative Works, in at least one of the
following places: within a NOTICE text file distributed as part of the
Derivative Works; within the Source form or documentation, if provided along
with the Derivative Works; or, within a display generated by the Derivative
Works, if and wherever such third-party notices normally appear. The contents of
the NOTICE file are for informational purposes only and do not modify the
License. You may add Your own attribution notices within Derivative Works that
You distribute, alongside or as an addendum to the NOTICE text from the Work,
provided that such additional attribution notices cannot be construed as
modifying the License.
You may add Your own copyright statement to Your modifications and may provide
additional or different license terms and conditions for use, reproduction, or
distribution of Your modifications, or for any such Derivative Works as a whole,
provided Your use, reproduction, and distribution of the Work otherwise complies
with the conditions stated in this License.
5. Submission of Contributions.
Unless You explicitly state otherwise, any Contribution intentionally submitted
for inclusion in the Work by You to the Licensor shall be under the terms and
conditions of this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify the terms of
any separate license agreement you may have executed with Licensor regarding
such Contributions.
6. Trademarks.
This License does not grant permission to use the trade names, trademarks,
service marks, or product names of the Licensor, except as required for
reasonable and customary use in describing the origin of the Work and
reproducing the content of the NOTICE file.
7. Disclaimer of Warranty.
Unless required by applicable law or agreed to in writing, Licensor provides the
Work (and each Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied,
including, without limitation, any warranties or conditions of TITLE,
NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are
solely responsible for determining the appropriateness of using or
redistributing the Work and assume any risks associated with Your exercise of
permissions under this License.
8. Limitation of Liability.
In no event and under no legal theory, whether in tort (including negligence),
contract, or otherwise, unless required by applicable law (such as deliberate
and grossly negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special, incidental,
or consequential damages of any character arising as a result of this License or
out of the use or inability to use the Work (including but not limited to
damages for loss of goodwill, work stoppage, computer failure or malfunction, or
any and all other commercial damages or losses), even if such Contributor has
been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability.
While redistributing the Work or Derivative Works thereof, You may choose to
offer, and charge a fee for, acceptance of support, warranty, indemnity, or
other liability obligations and/or rights consistent with this License. However,
in accepting such obligations, You may act only on Your own behalf and on Your
sole responsibility, not on behalf of any other Contributor, and only if You
agree to indemnify, defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason of your
accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work
To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]" replaced with your own
identifying information. (Don't include the brackets!) The text should be
enclosed in the appropriate comment syntax for the file format. We also
recommend that a file or class name and description of purpose be included on
the same "printed page" as the copyright notice for easier identification within
third-party archives.
Copyright [yyyy] [name of copyright owner]
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.

View File

@ -1,10 +0,0 @@
# Firebase Quickstarts for iOS
A collection of quickstart samples demonstrating the Firebase APIs on iOS. Each sample contains targets
for both Objective-C and Swift. For more information, see https://firebase.google.com.
## How to make contributions?
Please read and follow the steps in the [CONTRIBUTING.md](CONTRIBUTING.md)
## License
See [LICENSE](LICENSE)

View File

@ -1,702 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
1021DD271B05187A0018763B /* AdMobExampleTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 1021DD261B05187A0018763B /* AdMobExampleTests.m */; };
1048165C1B067ACD00139095 /* AdMobExampleSwiftTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1021DD351B0518E40018763B /* AdMobExampleSwiftTests.swift */; };
1048165E1B068A0300139095 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CF86EE2419787E6B00411520 /* Main.storyboard */; };
104816601B068FC100139095 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 105919B41ADDA93F00344065 /* ViewController.swift */; };
105414A31B163EB20006C828 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1054149F1B163EB20006C828 /* Images.xcassets */; };
105414A41B163EB20006C828 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 1054149F1B163EB20006C828 /* Images.xcassets */; };
105414A51B163EB20006C828 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 105414A01B163EB20006C828 /* LaunchScreen.xib */; };
105414A61B163EB20006C828 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 105414A01B163EB20006C828 /* LaunchScreen.xib */; };
1056D9731CDB936C0061ED72 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1056D9721CDB936C0061ED72 /* GoogleService-Info.plist */; };
1056D9741CDB936C0061ED72 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 1056D9721CDB936C0061ED72 /* GoogleService-Info.plist */; };
105919B71ADDA97D00344065 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CF86EE2419787E6B00411520 /* Main.storyboard */; };
105919B91ADDAA5900344065 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 105919B31ADDA93F00344065 /* AppDelegate.swift */; };
105919BA1ADDAA5D00344065 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 105919B41ADDA93F00344065 /* ViewController.swift */; };
CF86EE1D19787E6B00411520 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = CF86EE1C19787E6B00411520 /* main.m */; };
CF86EE2019787E6B00411520 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = CF86EE1F19787E6B00411520 /* AppDelegate.m */; };
CF86EE2319787E6B00411520 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CF86EE2219787E6B00411520 /* ViewController.m */; };
CF86EE2619787E6B00411520 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = CF86EE2419787E6B00411520 /* Main.storyboard */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
1021DD281B05187A0018763B /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = CF86EE0F19787E6B00411520 /* Project object */;
proxyType = 1;
remoteGlobalIDString = CF86EE1619787E6B00411520;
remoteInfo = AdMobExample;
};
104816591B067A9900139095 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = CF86EE0F19787E6B00411520 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 105919891ADDA8F700344065;
remoteInfo = AdMobExampleSwift;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
1021DD221B05187A0018763B /* AdMobExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AdMobExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
1021DD251B05187A0018763B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
1021DD261B05187A0018763B /* AdMobExampleTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AdMobExampleTests.m; sourceTree = "<group>"; };
1021DD311B0518E40018763B /* AdMobExampleSwiftTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AdMobExampleSwiftTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
1021DD341B0518E40018763B /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
1021DD351B0518E40018763B /* AdMobExampleSwiftTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AdMobExampleSwiftTests.swift; sourceTree = "<group>"; };
1054149F1B163EB20006C828 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = ../../shared/Images.xcassets; sourceTree = "<group>"; };
105414A01B163EB20006C828 /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = LaunchScreen.xib; path = ../../shared/LaunchScreen.xib; sourceTree = "<group>"; };
1056D9721CDB936C0061ED72 /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = "<group>"; };
1059198A1ADDA8F700344065 /* AdMobExampleSwift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AdMobExampleSwift.app; sourceTree = BUILT_PRODUCTS_DIR; };
105919B31ADDA93F00344065 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
105919B41ADDA93F00344065 /* ViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
10BCC1C31B06474800B5A8B2 /* ViewController_Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ViewController_Private.h; sourceTree = "<group>"; };
CF86EE1719787E6B00411520 /* AdMobExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AdMobExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
CF86EE1B19787E6B00411520 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
CF86EE1C19787E6B00411520 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
CF86EE1E19787E6B00411520 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
CF86EE1F19787E6B00411520 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
CF86EE2119787E6B00411520 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
CF86EE2219787E6B00411520 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
CF86EE2519787E6B00411520 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
1021DD1F1B05187A0018763B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
1021DD2E1B0518E40018763B /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
105919871ADDA8F700344065 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
CF86EE1419787E6B00411520 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
1021DD231B05187A0018763B /* AdMobExampleTests */ = {
isa = PBXGroup;
children = (
10BCC1C31B06474800B5A8B2 /* ViewController_Private.h */,
1021DD261B05187A0018763B /* AdMobExampleTests.m */,
1021DD241B05187A0018763B /* Supporting Files */,
);
path = AdMobExampleTests;
sourceTree = "<group>";
};
1021DD241B05187A0018763B /* Supporting Files */ = {
isa = PBXGroup;
children = (
1021DD251B05187A0018763B /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
1021DD321B0518E40018763B /* AdMobExampleSwiftTests */ = {
isa = PBXGroup;
children = (
1021DD351B0518E40018763B /* AdMobExampleSwiftTests.swift */,
1021DD331B0518E40018763B /* Supporting Files */,
);
path = AdMobExampleSwiftTests;
sourceTree = "<group>";
};
1021DD331B0518E40018763B /* Supporting Files */ = {
isa = PBXGroup;
children = (
1021DD341B0518E40018763B /* Info.plist */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
1059198B1ADDA8F700344065 /* AdMobExampleSwift */ = {
isa = PBXGroup;
children = (
105919B31ADDA93F00344065 /* AppDelegate.swift */,
105919B41ADDA93F00344065 /* ViewController.swift */,
);
path = AdMobExampleSwift;
sourceTree = "<group>";
};
CF86EE0E19787E6B00411520 = {
isa = PBXGroup;
children = (
CF86EE1919787E6B00411520 /* AdMobExample */,
1059198B1ADDA8F700344065 /* AdMobExampleSwift */,
1021DD231B05187A0018763B /* AdMobExampleTests */,
1021DD321B0518E40018763B /* AdMobExampleSwiftTests */,
CF86EE1819787E6B00411520 /* Products */,
);
sourceTree = "<group>";
};
CF86EE1819787E6B00411520 /* Products */ = {
isa = PBXGroup;
children = (
CF86EE1719787E6B00411520 /* AdMobExample.app */,
1059198A1ADDA8F700344065 /* AdMobExampleSwift.app */,
1021DD221B05187A0018763B /* AdMobExampleTests.xctest */,
1021DD311B0518E40018763B /* AdMobExampleSwiftTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
CF86EE1919787E6B00411520 /* AdMobExample */ = {
isa = PBXGroup;
children = (
CF86EE1E19787E6B00411520 /* AppDelegate.h */,
CF86EE1F19787E6B00411520 /* AppDelegate.m */,
CF86EE2119787E6B00411520 /* ViewController.h */,
CF86EE2219787E6B00411520 /* ViewController.m */,
CF86EE2419787E6B00411520 /* Main.storyboard */,
CF86EE1A19787E6B00411520 /* Supporting Files */,
EF6DB4B61CDA909800319C08 /* Shared */,
);
path = AdMobExample;
sourceTree = "<group>";
};
CF86EE1A19787E6B00411520 /* Supporting Files */ = {
isa = PBXGroup;
children = (
1056D9721CDB936C0061ED72 /* GoogleService-Info.plist */,
CF86EE1B19787E6B00411520 /* Info.plist */,
CF86EE1C19787E6B00411520 /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
EF6DB4B61CDA909800319C08 /* Shared */ = {
isa = PBXGroup;
children = (
1054149F1B163EB20006C828 /* Images.xcassets */,
105414A01B163EB20006C828 /* LaunchScreen.xib */,
);
name = Shared;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
1021DD211B05187A0018763B /* AdMobExampleTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1021DD2C1B05187A0018763B /* Build configuration list for PBXNativeTarget "AdMobExampleTests" */;
buildPhases = (
1021DD1E1B05187A0018763B /* Sources */,
1021DD1F1B05187A0018763B /* Frameworks */,
1021DD201B05187A0018763B /* Resources */,
);
buildRules = (
);
dependencies = (
1021DD291B05187A0018763B /* PBXTargetDependency */,
);
name = AdMobExampleTests;
productName = "AdMobExample Tests";
productReference = 1021DD221B05187A0018763B /* AdMobExampleTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
1021DD301B0518E40018763B /* AdMobExampleSwiftTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1021DD391B0518E40018763B /* Build configuration list for PBXNativeTarget "AdMobExampleSwiftTests" */;
buildPhases = (
1021DD2D1B0518E40018763B /* Sources */,
1021DD2E1B0518E40018763B /* Frameworks */,
1021DD2F1B0518E40018763B /* Resources */,
);
buildRules = (
);
dependencies = (
1048165A1B067A9900139095 /* PBXTargetDependency */,
);
name = AdMobExampleSwiftTests;
productName = "AdMobExampleSwift Tests";
productReference = 1021DD311B0518E40018763B /* AdMobExampleSwiftTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
105919891ADDA8F700344065 /* AdMobExampleSwift */ = {
isa = PBXNativeTarget;
buildConfigurationList = 105919AA1ADDA8F800344065 /* Build configuration list for PBXNativeTarget "AdMobExampleSwift" */;
buildPhases = (
105919861ADDA8F700344065 /* Sources */,
105919871ADDA8F700344065 /* Frameworks */,
105919881ADDA8F700344065 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = AdMobExampleSwift;
productName = BannerExampleSwift;
productReference = 1059198A1ADDA8F700344065 /* AdMobExampleSwift.app */;
productType = "com.apple.product-type.application";
};
CF86EE1619787E6B00411520 /* AdMobExample */ = {
isa = PBXNativeTarget;
buildConfigurationList = CF86EE3719787E6B00411520 /* Build configuration list for PBXNativeTarget "AdMobExample" */;
buildPhases = (
CF86EE1319787E6B00411520 /* Sources */,
CF86EE1419787E6B00411520 /* Frameworks */,
CF86EE1519787E6B00411520 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = AdMobExample;
productName = BannerExample;
productReference = CF86EE1719787E6B00411520 /* AdMobExample.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
CF86EE0F19787E6B00411520 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftMigration = 0700;
LastSwiftUpdateCheck = 0700;
LastUpgradeCheck = 0710;
ORGANIZATIONNAME = Google;
TargetAttributes = {
1021DD211B05187A0018763B = {
CreatedOnToolsVersion = 6.3.1;
TestTargetID = CF86EE1619787E6B00411520;
};
1021DD301B0518E40018763B = {
CreatedOnToolsVersion = 6.3.1;
};
105919891ADDA8F700344065 = {
CreatedOnToolsVersion = 6.2;
};
CF86EE1619787E6B00411520 = {
CreatedOnToolsVersion = 6.0;
};
};
};
buildConfigurationList = CF86EE1219787E6B00411520 /* Build configuration list for PBXProject "AdMobExample" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = CF86EE0E19787E6B00411520;
productRefGroup = CF86EE1819787E6B00411520 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
CF86EE1619787E6B00411520 /* AdMobExample */,
105919891ADDA8F700344065 /* AdMobExampleSwift */,
1021DD211B05187A0018763B /* AdMobExampleTests */,
1021DD301B0518E40018763B /* AdMobExampleSwiftTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
1021DD201B05187A0018763B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
1021DD2F1B0518E40018763B /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1048165E1B068A0300139095 /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
105919881ADDA8F700344065 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
105414A61B163EB20006C828 /* LaunchScreen.xib in Resources */,
1056D9741CDB936C0061ED72 /* GoogleService-Info.plist in Resources */,
105919B71ADDA97D00344065 /* Main.storyboard in Resources */,
105414A41B163EB20006C828 /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CF86EE1519787E6B00411520 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
105414A51B163EB20006C828 /* LaunchScreen.xib in Resources */,
1056D9731CDB936C0061ED72 /* GoogleService-Info.plist in Resources */,
CF86EE2619787E6B00411520 /* Main.storyboard in Resources */,
105414A31B163EB20006C828 /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
1021DD1E1B05187A0018763B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1021DD271B05187A0018763B /* AdMobExampleTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
1021DD2D1B0518E40018763B /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
104816601B068FC100139095 /* ViewController.swift in Sources */,
1048165C1B067ACD00139095 /* AdMobExampleSwiftTests.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
105919861ADDA8F700344065 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
105919BA1ADDAA5D00344065 /* ViewController.swift in Sources */,
105919B91ADDAA5900344065 /* AppDelegate.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
CF86EE1319787E6B00411520 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
CF86EE2319787E6B00411520 /* ViewController.m in Sources */,
CF86EE2019787E6B00411520 /* AppDelegate.m in Sources */,
CF86EE1D19787E6B00411520 /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
1021DD291B05187A0018763B /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = CF86EE1619787E6B00411520 /* AdMobExample */;
targetProxy = 1021DD281B05187A0018763B /* PBXContainerItemProxy */;
};
1048165A1B067A9900139095 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 105919891ADDA8F700344065 /* AdMobExampleSwift */;
targetProxy = 104816591B067A9900139095 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
CF86EE2419787E6B00411520 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
CF86EE2519787E6B00411520 /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
1021DD2A1B05187A0018763B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = AdMobExampleTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.quickstart.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AdMobExample.app/AdMobExample";
};
name = Debug;
};
1021DD2B1B05187A0018763B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = AdMobExampleTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.quickstart.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AdMobExample.app/AdMobExample";
};
name = Release;
};
1021DD3A1B0518E40018763B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
GCC_NO_COMMON_BLOCKS = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = AdMobExampleSwiftTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.quickstart.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "AdMobExampleSwift/AdMobExampleSwift-Bridging-Header.h";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
1021DD3B1B0518E40018763B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
GCC_NO_COMMON_BLOCKS = YES;
INFOPLIST_FILE = AdMobExampleSwiftTests/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.quickstart.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "AdMobExampleSwift/AdMobExampleSwift-Bridging-Header.h";
};
name = Release;
};
105919AB1ADDA8F800344065 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_ENABLE_MODULES = YES;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
INFOPLIST_FILE = AdMobExampleSwift/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.quickstart.AdMobExample;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
};
name = Debug;
};
105919AC1ADDA8F800344065 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CLANG_ENABLE_MODULES = YES;
COPY_PHASE_STRIP = NO;
INFOPLIST_FILE = AdMobExampleSwift/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.quickstart.AdMobExample;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
CF86EE3519787E6B00411520 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
ENABLE_BITCODE = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
CF86EE3619787E6B00411520 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
ENABLE_BITCODE = NO;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 6.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
CF86EE3819787E6B00411520 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = AdMobExample/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.quickstart.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
CF86EE3919787E6B00411520 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = AdMobExample/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "com.google.firebase.quickstart.$(PRODUCT_NAME:rfc1034identifier)";
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1021DD2C1B05187A0018763B /* Build configuration list for PBXNativeTarget "AdMobExampleTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1021DD2A1B05187A0018763B /* Debug */,
1021DD2B1B05187A0018763B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
1021DD391B0518E40018763B /* Build configuration list for PBXNativeTarget "AdMobExampleSwiftTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1021DD3A1B0518E40018763B /* Debug */,
1021DD3B1B0518E40018763B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
105919AA1ADDA8F800344065 /* Build configuration list for PBXNativeTarget "AdMobExampleSwift" */ = {
isa = XCConfigurationList;
buildConfigurations = (
105919AB1ADDA8F800344065 /* Debug */,
105919AC1ADDA8F800344065 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
CF86EE1219787E6B00411520 /* Build configuration list for PBXProject "AdMobExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CF86EE3519787E6B00411520 /* Debug */,
CF86EE3619787E6B00411520 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
CF86EE3719787E6B00411520 /* Build configuration list for PBXNativeTarget "AdMobExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
CF86EE3819787E6B00411520 /* Debug */,
CF86EE3919787E6B00411520 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = CF86EE0F19787E6B00411520 /* Project object */;
}

View File

@ -1,4 +0,0 @@
BasedOnStyle: Google
ColumnLimit: 100
BinPackParameters: false
AllowAllParametersOfDeclarationOnNextLine: true

View File

@ -1,26 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
// AppDelegate.h
// AdMobExample
//
@import UIKit;
@interface AppDelegate : UIResponder<UIApplicationDelegate>
@property(strong, nonatomic) UIWindow *window;
@end

View File

@ -1,37 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
// AppDelegate.m
// AdMobExample
//
// [START firebase_config]
#import "AppDelegate.h"
@import Firebase;
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Use Firebase library to configure APIs
[FIRApp configure];
return YES;
}
// [END firebase_config]
@end

View File

@ -1,84 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10109" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" initialViewController="j8W-h9-m7Y">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10083"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
</dependencies>
<scenes>
<!--Navigation Controller-->
<scene sceneID="GJg-Gt-22b">
<objects>
<navigationController id="j8W-h9-m7Y" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" barStyle="black" id="f0y-fa-nfu">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<color key="barTintColor" red="0.0" green="0.52156862745098043" blue="0.88627450980392153" alpha="1" colorSpace="calibratedRGB"/>
<textAttributes key="titleTextAttributes">
<color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
</textAttributes>
</navigationBar>
<connections>
<segue destination="BYZ-38-t0r" kind="relationship" relationship="rootViewController" id="41a-dK-qaq"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="nwa-1h-PWq" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-320" y="165"/>
</scene>
<!--AdMob Example-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController storyboardIdentifier="ViewController" id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="cqw-rn-aGh"/>
<viewControllerLayoutGuide type="bottom" id="DOW-zM-5O6"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="0.0" width="320" height="568"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="0lk-I0-H1V">
<rect key="frame" x="55" y="312" width="210" height="44"/>
<color key="backgroundColor" red="1" green="0.5607843137254902" blue="0.0" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstAttribute="height" constant="44" id="Rh7-tD-pGR"/>
</constraints>
<fontDescription key="fontDescription" name="HelveticaNeue" family="Helvetica Neue" pointSize="15"/>
<inset key="contentEdgeInsets" minX="20" minY="0.0" maxX="20" maxY="0.0"/>
<state key="normal" title="SHOW INTERSTITIAL AD">
<color key="titleColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
</state>
<connections>
<action selector="didTapInterstitialButton:" destination="BYZ-38-t0r" eventType="touchDown" id="PHm-1Y-kQq"/>
</connections>
</button>
<view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="K9X-9n-igV" customClass="GADBannerView">
<rect key="frame" x="0.0" y="518" width="320" height="50"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="width" constant="320" id="4bc-bU-aU3"/>
<constraint firstAttribute="height" constant="50" id="iNt-Cj-6ba"/>
</constraints>
</view>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="centerX" secondItem="K9X-9n-igV" secondAttribute="centerX" id="663-fB-sia"/>
<constraint firstItem="K9X-9n-igV" firstAttribute="bottom" secondItem="8bC-Xf-vdC" secondAttribute="bottomMargin" id="MXX-D6-dCJ"/>
<constraint firstAttribute="centerX" secondItem="0lk-I0-H1V" secondAttribute="centerX" id="WYo-0p-5gK"/>
<constraint firstItem="0lk-I0-H1V" firstAttribute="centerY" secondItem="8bC-Xf-vdC" secondAttribute="centerY" constant="50" id="hvW-MU-VNC"/>
</constraints>
</view>
<toolbarItems/>
<navigationItem key="navigationItem" title="AdMob Example" id="nMe-hm-jWd"/>
<simulatedToolbarMetrics key="simulatedBottomBarMetrics"/>
<connections>
<outlet property="bannerView" destination="K9X-9n-igV" id="sGa-l9-VFb"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="121" y="165"/>
</scene>
</scenes>
</document>

View File

@ -1,34 +0,0 @@
<?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>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
</dict>
</plist>

View File

@ -1,24 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
// ViewController.h
// AdMobExample
//
@import UIKit;
@interface ViewController : UIViewController
@end

View File

@ -1,81 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
// ViewController.m
// AdMobExample
//
// [START firebase_banner_example]
#import "ViewController.h"
@import GoogleMobileAds;
/**
* AdMob ad unit IDs are not currently stored inside the google-services.plist file. Developers
* using AdMob can store them as custom values in another plist, or simply use constants. Note that
* these ad units are configured to return only test ads, and should not be used outside this sample.
*/
static NSString *const kBannerAdUnitID = @"ca-app-pub-3940256099942544/2934735716";
static NSString *const kInterstitialAdUnitID = @"ca-app-pub-3940256099942544/4411468910";
@interface ViewController ()<GADInterstitialDelegate>
/**
* @property
* A UIView subclass that displays ads capable of responding to user touch.
*/
@property(nonatomic, weak) IBOutlet GADBannerView *bannerView;
/**
* @property
* A UIView subclass that displays ads capable of responding to user touch.
*/
@property(nonatomic, strong) GADInterstitial *interstitial;
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.bannerView.adUnitID = kBannerAdUnitID;
self.bannerView.rootViewController = self;
[self.bannerView loadRequest:[GADRequest request]];
// [END firebase_banner_example]
// [START firebase_interstitial_example]
self.interstitial = [self createAndLoadInterstitial];
}
- (GADInterstitial *)createAndLoadInterstitial {
GADInterstitial *interstitial = [[GADInterstitial alloc]
initWithAdUnitID:kInterstitialAdUnitID];
interstitial.delegate = self;
[interstitial loadRequest:[GADRequest request]];
return interstitial;
}
- (void)interstitialDidDismissScreen:(GADInterstitial *)interstitial {
self.interstitial = [self createAndLoadInterstitial];
}
- (IBAction)didTapInterstitialButton:(id)sender {
if ([self.interstitial isReady]) {
[self.interstitial presentFromRootViewController:self];
}
}
@end
// [END firebase_interstitial_example]

View File

@ -1,27 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
// main.m
// BannerExample
//
@import UIKit;
#import "AppDelegate.h"
int main(int argc, char* argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

View File

@ -1,37 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
// AppDelegate.swift
// AdMobExampleSwift
//
// [START firebase_config]
import UIKit
import Firebase
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Use Firebase library to configure APIs
FIRApp.configure()
return true
}
// [END firebase_config]
}

View File

@ -1,47 +0,0 @@
<?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>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>

View File

@ -1,69 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
// ViewController.swift
// AdMobExampleSwift
//
// [START firebase_banner_example]
import UIKit
import Firebase
/**
* AdMob ad unit IDs are not currently stored inside the google-services.plist file. Developers
* using AdMob can store them as custom values in another plist, or simply use constants. Note that
* these ad units are configured to return only test ads, and should not be used outside this sample.
*/
let kBannerAdUnitID = "ca-app-pub-3940256099942544/2934735716"
let kInterstitialAdUnitID = "ca-app-pub-3940256099942544/4411468910"
// Makes ViewController available to Objc classes.
@objc(ViewController)
class ViewController: UIViewController, GADInterstitialDelegate {
@IBOutlet weak var bannerView: GADBannerView!
var interstitial: GADInterstitial!
override func viewDidLoad() {
super.viewDidLoad()
self.bannerView.adUnitID = kBannerAdUnitID
self.bannerView.rootViewController = self
self.bannerView.loadRequest(GADRequest())
// [END firebase_banner_example]
// [START firebase_interstitial_example]
self.interstitial = createAndLoadInterstitial()
}
func createAndLoadInterstitial() -> GADInterstitial {
let interstitial =
GADInterstitial(adUnitID: kInterstitialAdUnitID)
interstitial.delegate = self
interstitial.loadRequest(GADRequest())
return interstitial
}
func interstitialDidDismissScreen(interstitial: GADInterstitial!) {
self.interstitial = createAndLoadInterstitial()
}
@IBAction func didTapInterstitialButton(sender: AnyObject) {
if (self.interstitial.isReady) {
self.interstitial.presentFromRootViewController(self)
}
}
}
// [END firebase_interstitial_example]

View File

@ -1,46 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
// AdMobExampleSwift_Tests.swift
// AdMobExampleSwift Tests
//
import UIKit
import XCTest
// Important: Import the project module
@testable import AdMobExampleSwift
class AdMobExampleSwiftTests: XCTestCase {
// Important: create a variable for the view controller outside of setup(). Otherwise the variable is not available to the test functions
var vcToTest:ViewController = ViewController()
override func setUp() {
super.setUp()
let storyboard:UIStoryboard = UIStoryboard(name: "Main", bundle: NSBundle(forClass: self.dynamicType))
vcToTest = storyboard.instantiateViewControllerWithIdentifier("ViewController") as! ViewController
let _ = vcToTest.view
}
func testBannerView() {
XCTAssertNotNil(vcToTest.bannerView, "Should connect bannerView IBOutlet.")
}
func testInterstitial() {
XCTAssertNotNil(vcToTest.interstitial, "Should create interstitial.")
}
}

View File

@ -1,24 +0,0 @@
<?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>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

View File

@ -1,46 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
// AdMobExample_Tests.m
// AdMobExample Tests
//
#import <UIKit/UIKit.h>
#import <XCTest/XCTest.h>
#import "ViewController_Private.h"
@interface AdMobExampleTests : XCTestCase
@property (nonatomic) ViewController *vcToTest;
@property (nonatomic) UIStoryboard *storyboard;
@end
@implementation AdMobExampleTests
- (void)setUp {
[super setUp];
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
self.vcToTest = [storyboard instantiateViewControllerWithIdentifier:@"ViewController"];
[self.vcToTest view];
}
- (void)testBannerView {
XCTAssertNotNil(self.vcToTest.bannerView, @"Should connect bannerView IBOutlet.");
}
- (void)testInterstitial {
XCTAssertNotNil(self.vcToTest.interstitial, @"Should create interstitial.");
}
@end

View File

@ -1,24 +0,0 @@
<?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>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
</dict>
</plist>

View File

@ -1,26 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
// ViewController_Private.h
// AdMobExample Tests
//
#import "ViewController.h"
#import <Firebase/AdMob.h>
@interface ViewController ()
@property(nonatomic, weak) IBOutlet GADBannerView *bannerView;
@property(nonatomic, strong) GADInterstitial *interstitial;
@end

View File

@ -1,12 +0,0 @@
use_frameworks!
platform :ios, '7.0'
pod 'Firebase/AdMob'
target 'AdMobExample' do
end
target 'AdMobExampleSwift' do
end
target 'AdMobExampleTests' do
end
target 'AdMobExampleSwiftTests' do
end

View File

@ -1,45 +0,0 @@
Google AdMob Quickstart
=======================
The Google AdMob iOS quickstart demonstrates how to display an interstitial ad and a simple banner
ad.
Introduction
------------
- [Read more about Google AdMob](https://firebase.google.com/docs/admob/)
Getting Started
---------------
- [Add Firebase to your iOS Project](https://firebase.google.com/docs/ios/setup).
- Run the sample on your iOS device or simulator.
Note: You will need Swift 2.0 to run the Swift version of this quickstart.
Support
-------
- [Stack Overflow](https://stackoverflow.com/questions/tagged/admob)
- [Developer Forum](https://groups.google.com/group/google-admob-ads-sdk)
- [Firebase Support](https://firebase.google.com/support/)
License
-------
Copyright 2015 Google, Inc.
Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements. See the NOTICE file distributed with this work for
additional information regarding copyright ownership. The ASF licenses this
file to you 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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 140 KiB

View File

@ -1,612 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
5F3B16801AFC453200860007 /* CircleImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F3B167F1AFC453200860007 /* CircleImageView.m */; };
5F3B16811AFC453200860007 /* CircleImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F3B167F1AFC453200860007 /* CircleImageView.m */; };
5F5A53521ADE670C00F81DF0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A53511ADE670C00F81DF0 /* main.m */; };
5F5A53551ADE670C00F81DF0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A53541ADE670C00F81DF0 /* AppDelegate.m */; };
5F5A53581ADE670C00F81DF0 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A53571ADE670C00F81DF0 /* ViewController.m */; };
5F5A535B1ADE670C00F81DF0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F5A53591ADE670C00F81DF0 /* Main.storyboard */; };
5F5A537E1ADE67D500F81DF0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A537D1ADE67D500F81DF0 /* AppDelegate.swift */; };
5F5A53801ADE67D500F81DF0 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A537F1ADE67D500F81DF0 /* ViewController.swift */; };
5F5A539C1ADE69AA00F81DF0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F5A53591ADE670C00F81DF0 /* Main.storyboard */; };
5F99610A1AE0CF4F0034F503 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5F9961061AE0CF4F0034F503 /* Images.xcassets */; };
5F99610B1AE0CF4F0034F503 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5F9961061AE0CF4F0034F503 /* Images.xcassets */; };
5F99610C1AE0CF4F0034F503 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5F9961071AE0CF4F0034F503 /* LaunchScreen.xib */; };
5F99610D1AE0CF4F0034F503 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5F9961071AE0CF4F0034F503 /* LaunchScreen.xib */; };
5FC04A7F1AF1DCAA00F787CA /* PatternTabBarController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FC04A7E1AF1DCAA00F787CA /* PatternTabBarController.m */; };
5FC04A811AF1DF8300F787CA /* PatternTabBarController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5FC04A801AF1DF8300F787CA /* PatternTabBarController.swift */; };
5FC7AD8E1B0D446A004E3100 /* LogWrapper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5FC7AD8D1B0D446A004E3100 /* LogWrapper.mm */; };
5FDE05641B0DAD5C0037B82F /* AppTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FDE05631B0DAD5C0037B82F /* AppTests.m */; };
EF01600C1BD07C1F00F8DA01 /* AnalyticsImages.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EF01600B1BD07C1F00F8DA01 /* AnalyticsImages.xcassets */; };
EF01600D1BD07C1F00F8DA01 /* AnalyticsImages.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EF01600B1BD07C1F00F8DA01 /* AnalyticsImages.xcassets */; };
EFB6C1B61C6524F4007CCA78 /* FoodPickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EFB6C1B51C6524F4007CCA78 /* FoodPickerViewController.m */; };
EFB6C1BA1C656D38007CCA78 /* FoodPickerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFB6C1B91C656D38007CCA78 /* FoodPickerViewController.swift */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
5FC7AD881B0D4106004E3100 /* PBXContainerItemProxy */ = {
isa = PBXContainerItemProxy;
containerPortal = 5F5A53441ADE670C00F81DF0 /* Project object */;
proxyType = 1;
remoteGlobalIDString = 5F5A534B1ADE670C00F81DF0;
remoteInfo = AnalyticsExample;
};
/* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */
5F3B167E1AFC453200860007 /* CircleImageView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CircleImageView.h; sourceTree = "<group>"; };
5F3B167F1AFC453200860007 /* CircleImageView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CircleImageView.m; sourceTree = "<group>"; };
5F5A534C1ADE670C00F81DF0 /* AnalyticsExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AnalyticsExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
5F5A53501ADE670C00F81DF0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
5F5A53511ADE670C00F81DF0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
5F5A53531ADE670C00F81DF0 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
5F5A53541ADE670C00F81DF0 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
5F5A53561ADE670C00F81DF0 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
5F5A53571ADE670C00F81DF0 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
5F5A535A1ADE670C00F81DF0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
5F5A53791ADE67D500F81DF0 /* AnalyticsExampleSwift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AnalyticsExampleSwift.app; sourceTree = BUILT_PRODUCTS_DIR; };
5F5A537D1ADE67D500F81DF0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
5F5A537F1ADE67D500F81DF0 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
5F9961061AE0CF4F0034F503 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
5F9961071AE0CF4F0034F503 /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LaunchScreen.xib; sourceTree = "<group>"; };
5FC04A7D1AF1DCAA00F787CA /* PatternTabBarController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PatternTabBarController.h; sourceTree = "<group>"; };
5FC04A7E1AF1DCAA00F787CA /* PatternTabBarController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PatternTabBarController.m; sourceTree = "<group>"; };
5FC04A801AF1DF8300F787CA /* PatternTabBarController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PatternTabBarController.swift; sourceTree = "<group>"; };
5FC7AD821B0D4106004E3100 /* AnalyticsExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AnalyticsExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
5FC7AD8D1B0D446A004E3100 /* LogWrapper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = LogWrapper.mm; sourceTree = "<group>"; };
5FC7AD8F1B0D44B9004E3100 /* LogWrapper.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = LogWrapper.h; sourceTree = "<group>"; };
5FDE05631B0DAD5C0037B82F /* AppTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AppTests.m; sourceTree = "<group>"; };
EF01600B1BD07C1F00F8DA01 /* AnalyticsImages.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = AnalyticsImages.xcassets; sourceTree = "<group>"; };
EFB6C1B41C6524F4007CCA78 /* FoodPickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FoodPickerViewController.h; sourceTree = "<group>"; };
EFB6C1B51C6524F4007CCA78 /* FoodPickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FoodPickerViewController.m; sourceTree = "<group>"; };
EFB6C1B91C656D38007CCA78 /* FoodPickerViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FoodPickerViewController.swift; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
5F5A53491ADE670C00F81DF0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
5F5A53761ADE67D500F81DF0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
5FC7AD7F1B0D4106004E3100 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
5F5A53431ADE670C00F81DF0 = {
isa = PBXGroup;
children = (
5F5A534E1ADE670C00F81DF0 /* AnalyticsExample */,
5F5A537A1ADE67D500F81DF0 /* AnalyticsExampleSwift */,
5FC7AD831B0D4106004E3100 /* AnalyticsExampleTests */,
5F5A534D1ADE670C00F81DF0 /* Products */,
5F9961041AE0CF4F0034F503 /* Shared */,
5FC29E541AE9255700668C8D /* Images */,
);
sourceTree = "<group>";
};
5F5A534D1ADE670C00F81DF0 /* Products */ = {
isa = PBXGroup;
children = (
5F5A534C1ADE670C00F81DF0 /* AnalyticsExample.app */,
5F5A53791ADE67D500F81DF0 /* AnalyticsExampleSwift.app */,
5FC7AD821B0D4106004E3100 /* AnalyticsExampleTests.xctest */,
);
name = Products;
sourceTree = "<group>";
};
5F5A534E1ADE670C00F81DF0 /* AnalyticsExample */ = {
isa = PBXGroup;
children = (
5F5A53531ADE670C00F81DF0 /* AppDelegate.h */,
5F5A53541ADE670C00F81DF0 /* AppDelegate.m */,
EFB6C1B41C6524F4007CCA78 /* FoodPickerViewController.h */,
EFB6C1B51C6524F4007CCA78 /* FoodPickerViewController.m */,
5FC04A7D1AF1DCAA00F787CA /* PatternTabBarController.h */,
5FC04A7E1AF1DCAA00F787CA /* PatternTabBarController.m */,
5F5A53561ADE670C00F81DF0 /* ViewController.h */,
5F5A53571ADE670C00F81DF0 /* ViewController.m */,
5F5A534F1ADE670C00F81DF0 /* Supporting Files */,
);
path = AnalyticsExample;
sourceTree = "<group>";
};
5F5A534F1ADE670C00F81DF0 /* Supporting Files */ = {
isa = PBXGroup;
children = (
5F3B167E1AFC453200860007 /* CircleImageView.h */,
5F3B167F1AFC453200860007 /* CircleImageView.m */,
5F5A53511ADE670C00F81DF0 /* main.m */,
5F5A53501ADE670C00F81DF0 /* Info.plist */,
5F5A53591ADE670C00F81DF0 /* Main.storyboard */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
5F5A537A1ADE67D500F81DF0 /* AnalyticsExampleSwift */ = {
isa = PBXGroup;
children = (
5F5A537D1ADE67D500F81DF0 /* AppDelegate.swift */,
EFB6C1B91C656D38007CCA78 /* FoodPickerViewController.swift */,
5FC04A801AF1DF8300F787CA /* PatternTabBarController.swift */,
5F5A537F1ADE67D500F81DF0 /* ViewController.swift */,
);
path = AnalyticsExampleSwift;
sourceTree = "<group>";
};
5F9961041AE0CF4F0034F503 /* Shared */ = {
isa = PBXGroup;
children = (
5F9961061AE0CF4F0034F503 /* Images.xcassets */,
5F9961071AE0CF4F0034F503 /* LaunchScreen.xib */,
);
name = Shared;
path = ../shared;
sourceTree = "<group>";
};
5FC29E541AE9255700668C8D /* Images */ = {
isa = PBXGroup;
children = (
EF01600B1BD07C1F00F8DA01 /* AnalyticsImages.xcassets */,
);
path = Images;
sourceTree = "<group>";
};
5FC7AD831B0D4106004E3100 /* AnalyticsExampleTests */ = {
isa = PBXGroup;
children = (
5FDE05631B0DAD5C0037B82F /* AppTests.m */,
5FC7AD8D1B0D446A004E3100 /* LogWrapper.mm */,
5FC7AD8F1B0D44B9004E3100 /* LogWrapper.h */,
);
path = AnalyticsExampleTests;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
5F5A534B1ADE670C00F81DF0 /* AnalyticsExample */ = {
isa = PBXNativeTarget;
buildConfigurationList = 5F5A536F1ADE670C00F81DF0 /* Build configuration list for PBXNativeTarget "AnalyticsExample" */;
buildPhases = (
5F5A53481ADE670C00F81DF0 /* Sources */,
5F5A53491ADE670C00F81DF0 /* Frameworks */,
5F5A534A1ADE670C00F81DF0 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = AnalyticsExample;
productName = AnalyticsExample;
productReference = 5F5A534C1ADE670C00F81DF0 /* AnalyticsExample.app */;
productType = "com.apple.product-type.application";
};
5F5A53781ADE67D500F81DF0 /* AnalyticsExampleSwift */ = {
isa = PBXNativeTarget;
buildConfigurationList = 5F5A53991ADE67D500F81DF0 /* Build configuration list for PBXNativeTarget "AnalyticsExampleSwift" */;
buildPhases = (
5F5A53751ADE67D500F81DF0 /* Sources */,
5F5A53761ADE67D500F81DF0 /* Frameworks */,
5F5A53771ADE67D500F81DF0 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = AnalyticsExampleSwift;
productName = AnalyticsExampleSwift;
productReference = 5F5A53791ADE67D500F81DF0 /* AnalyticsExampleSwift.app */;
productType = "com.apple.product-type.application";
};
5FC7AD811B0D4106004E3100 /* AnalyticsExampleTests */ = {
isa = PBXNativeTarget;
buildConfigurationList = 5FC7AD8C1B0D4106004E3100 /* Build configuration list for PBXNativeTarget "AnalyticsExampleTests" */;
buildPhases = (
5FC7AD7E1B0D4106004E3100 /* Sources */,
5FC7AD7F1B0D4106004E3100 /* Frameworks */,
5FC7AD801B0D4106004E3100 /* Resources */,
);
buildRules = (
);
dependencies = (
5FC7AD891B0D4106004E3100 /* PBXTargetDependency */,
);
name = AnalyticsExampleTests;
productName = AnalyticsExampleTests;
productReference = 5FC7AD821B0D4106004E3100 /* AnalyticsExampleTests.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
5F5A53441ADE670C00F81DF0 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0710;
LastUpgradeCheck = 0710;
ORGANIZATIONNAME = "Google Inc.";
TargetAttributes = {
5F5A534B1ADE670C00F81DF0 = {
CreatedOnToolsVersion = 6.3;
};
5F5A53781ADE67D500F81DF0 = {
CreatedOnToolsVersion = 6.3;
};
5FC7AD811B0D4106004E3100 = {
CreatedOnToolsVersion = 6.3.2;
TestTargetID = 5F5A534B1ADE670C00F81DF0;
};
};
};
buildConfigurationList = 5F5A53471ADE670C00F81DF0 /* Build configuration list for PBXProject "AnalyticsExample" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 5F5A53431ADE670C00F81DF0;
productRefGroup = 5F5A534D1ADE670C00F81DF0 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
5F5A534B1ADE670C00F81DF0 /* AnalyticsExample */,
5F5A53781ADE67D500F81DF0 /* AnalyticsExampleSwift */,
5FC7AD811B0D4106004E3100 /* AnalyticsExampleTests */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
5F5A534A1ADE670C00F81DF0 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
5F99610C1AE0CF4F0034F503 /* LaunchScreen.xib in Resources */,
5F99610A1AE0CF4F0034F503 /* Images.xcassets in Resources */,
EF01600C1BD07C1F00F8DA01 /* AnalyticsImages.xcassets in Resources */,
5F5A535B1ADE670C00F81DF0 /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
5F5A53771ADE67D500F81DF0 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
5F99610D1AE0CF4F0034F503 /* LaunchScreen.xib in Resources */,
EF01600D1BD07C1F00F8DA01 /* AnalyticsImages.xcassets in Resources */,
5F5A539C1ADE69AA00F81DF0 /* Main.storyboard in Resources */,
5F99610B1AE0CF4F0034F503 /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
5FC7AD801B0D4106004E3100 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
5F5A53481ADE670C00F81DF0 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
5F5A53581ADE670C00F81DF0 /* ViewController.m in Sources */,
5F5A53551ADE670C00F81DF0 /* AppDelegate.m in Sources */,
5FC04A7F1AF1DCAA00F787CA /* PatternTabBarController.m in Sources */,
5F3B16801AFC453200860007 /* CircleImageView.m in Sources */,
EFB6C1B61C6524F4007CCA78 /* FoodPickerViewController.m in Sources */,
5F5A53521ADE670C00F81DF0 /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
5F5A53751ADE67D500F81DF0 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
5F3B16811AFC453200860007 /* CircleImageView.m in Sources */,
5FC04A811AF1DF8300F787CA /* PatternTabBarController.swift in Sources */,
5F5A53801ADE67D500F81DF0 /* ViewController.swift in Sources */,
EFB6C1BA1C656D38007CCA78 /* FoodPickerViewController.swift in Sources */,
5F5A537E1ADE67D500F81DF0 /* AppDelegate.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
5FC7AD7E1B0D4106004E3100 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
5FC7AD8E1B0D446A004E3100 /* LogWrapper.mm in Sources */,
5FDE05641B0DAD5C0037B82F /* AppTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
5FC7AD891B0D4106004E3100 /* PBXTargetDependency */ = {
isa = PBXTargetDependency;
target = 5F5A534B1ADE670C00F81DF0 /* AnalyticsExample */;
targetProxy = 5FC7AD881B0D4106004E3100 /* PBXContainerItemProxy */;
};
/* End PBXTargetDependency section */
/* Begin PBXVariantGroup section */
5F5A53591ADE670C00F81DF0 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
5F5A535A1ADE670C00F81DF0 /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
5F5A536D1ADE670C00F81DF0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
5F5A536E1ADE670C00F81DF0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
5F5A53701ADE670C00F81DF0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Brand Assets";
CODE_SIGN_IDENTITY = "iPhone Developer";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = AnalyticsExample/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.quickstart.analytics;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
5F5A53711ADE670C00F81DF0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = "Brand Assets";
CODE_SIGN_IDENTITY = "iPhone Developer";
ENABLE_BITCODE = NO;
INFOPLIST_FILE = AnalyticsExample/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.quickstart.analytics;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
5F5A53951ADE67D500F81DF0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = "$(SRCROOT)/AnalyticsExample/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.quickstart.analytics;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "";
};
name = Debug;
};
5F5A53961ADE67D500F81DF0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = "$(SRCROOT)/AnalyticsExample/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.quickstart.analytics;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = "";
};
name = Release;
};
5FC7AD8A1B0D4106004E3100 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"\"${PODS_ROOT}/Headers/Public\"",
"\"${PODS_ROOT}/Headers/Public/Google\"",
"\"${PODS_ROOT}/Headers/Public/Google/Google\"",
"\"${PODS_ROOT}/Headers/Public/GoogleAnalytics\"",
"\"${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities\"",
"\"${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities\"",
"\"${PODS_ROOT}/Headers/Public/GoogleUtilities\"",
AnalayticsExample,
);
INFOPLIST_FILE = AnalyticsExample/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AnalyticsExample.app/AnalyticsExample";
};
name = Debug;
};
5FC7AD8B1B0D4106004E3100 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
COPY_PHASE_STRIP = NO;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
FRAMEWORK_SEARCH_PATHS = (
"$(SDKROOT)/Developer/Library/Frameworks",
"$(inherited)",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
"\"${PODS_ROOT}/Headers/Public\"",
"\"${PODS_ROOT}/Headers/Public/Google\"",
"\"${PODS_ROOT}/Headers/Public/Google/Google\"",
"\"${PODS_ROOT}/Headers/Public/GoogleAnalytics\"",
"\"${PODS_ROOT}/Headers/Public/GoogleNetworkingUtilities\"",
"\"${PODS_ROOT}/Headers/Public/GoogleSymbolUtilities\"",
"\"${PODS_ROOT}/Headers/Public/GoogleUtilities\"",
AnalayticsExample,
);
INFOPLIST_FILE = AnalyticsExample/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 8.3;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
PRODUCT_NAME = "$(TARGET_NAME)";
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/AnalyticsExample.app/AnalyticsExample";
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
5F5A53471ADE670C00F81DF0 /* Build configuration list for PBXProject "AnalyticsExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
5F5A536D1ADE670C00F81DF0 /* Debug */,
5F5A536E1ADE670C00F81DF0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
5F5A536F1ADE670C00F81DF0 /* Build configuration list for PBXNativeTarget "AnalyticsExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
5F5A53701ADE670C00F81DF0 /* Debug */,
5F5A53711ADE670C00F81DF0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
5F5A53991ADE67D500F81DF0 /* Build configuration list for PBXNativeTarget "AnalyticsExampleSwift" */ = {
isa = XCConfigurationList;
buildConfigurations = (
5F5A53951ADE67D500F81DF0 /* Debug */,
5F5A53961ADE67D500F81DF0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
5FC7AD8C1B0D4106004E3100 /* Build configuration list for PBXNativeTarget "AnalyticsExampleTests" */ = {
isa = XCConfigurationList;
buildConfigurations = (
5FC7AD8A1B0D4106004E3100 /* Debug */,
5FC7AD8B1B0D4106004E3100 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 5F5A53441ADE670C00F81DF0 /* Project object */;
}

View File

@ -1,23 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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;
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (strong, nonatomic) UIWindow *window;
@end

View File

@ -1,39 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
//
// For more information on setting up and running this sample code, see
// https://firebase.google.com/docs/analytics/ios/start
//
#import "AppDelegate.h"
@import Firebase;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// [START configure]
[FIRApp configure];
// [END configure]
// Set a white background so that patterns are showcased.
_window.backgroundColor = [UIColor whiteColor];
return YES;
}
@end

View File

@ -1,259 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10109" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="aUL-89-tJW">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10083"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
</dependencies>
<scenes>
<!--A-->
<scene sceneID="jUt-xG-r3W">
<objects>
<viewController title="A" id="lVf-Ya-OQV" customClass="ViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="Vpe-J1-fiS"/>
<viewControllerLayoutGuide type="bottom" id="ABr-eH-ePx"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="M3b-jw-4PX">
<rect key="frame" x="0.0" y="64" width="600" height="487"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="256" verticalHuggingPriority="256" image="favorite.png" translatesAutoresizingMaskIntoConstraints="NO" id="zIB-UN-zJs" customClass="CircleImageView">
<rect key="frame" x="172" y="116" width="256" height="256"/>
<constraints>
<constraint firstAttribute="width" constant="256" id="QF0-yo-PQ6"/>
<constraint firstAttribute="height" constant="256" id="jwz-gG-ahM"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.95000000000000007" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="centerX" secondItem="zIB-UN-zJs" secondAttribute="centerX" id="svQ-3f-czU"/>
<constraint firstAttribute="centerY" secondItem="zIB-UN-zJs" secondAttribute="centerY" id="w5D-lZ-IUK"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="A" image="icon-favorite.png" id="whl-nQ-ck2"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dxv-GQ-DsN" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="149" y="428"/>
</scene>
<!--Food Picker View Controller-->
<scene sceneID="0XD-OC-caG">
<objects>
<viewController id="9aa-Nc-DxV" customClass="FoodPickerViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="7Bw-iC-Vpq"/>
<viewControllerLayoutGuide type="bottom" id="558-dG-rhb"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="e62-9h-gXP">
<rect key="frame" x="0.0" y="0.0" width="600" height="600"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Pick Your Favorite Food!" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="mef-P0-8Mc">
<rect key="frame" x="166" y="20" width="267" height="30"/>
<fontDescription key="fontDescription" type="system" pointSize="25"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<pickerView contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="dRL-3M-rXu">
<rect key="frame" x="20" y="70" width="560" height="530"/>
<connections>
<outlet property="dataSource" destination="9aa-Nc-DxV" id="kYj-ND-lI1"/>
<outlet property="delegate" destination="9aa-Nc-DxV" id="Xef-kO-iZt"/>
</connections>
</pickerView>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="dRL-3M-rXu" firstAttribute="centerX" secondItem="e62-9h-gXP" secondAttribute="centerX" id="9Y9-R2-3DA"/>
<constraint firstItem="dRL-3M-rXu" firstAttribute="top" secondItem="mef-P0-8Mc" secondAttribute="bottom" constant="20" id="B6c-W7-SlD"/>
<constraint firstItem="dRL-3M-rXu" firstAttribute="centerY" secondItem="e62-9h-gXP" secondAttribute="centerY" id="JWr-a8-Oxd"/>
<constraint firstItem="558-dG-rhb" firstAttribute="top" secondItem="dRL-3M-rXu" secondAttribute="bottom" id="KRN-TO-ihk"/>
<constraint firstAttribute="trailingMargin" secondItem="dRL-3M-rXu" secondAttribute="trailing" id="W8N-19-sBA"/>
<constraint firstItem="mef-P0-8Mc" firstAttribute="top" secondItem="7Bw-iC-Vpq" secondAttribute="bottom" id="bx7-0K-Fbl"/>
<constraint firstItem="dRL-3M-rXu" firstAttribute="leading" secondItem="e62-9h-gXP" secondAttribute="leadingMargin" id="iGi-SV-I0G"/>
<constraint firstItem="mef-P0-8Mc" firstAttribute="centerX" secondItem="e62-9h-gXP" secondAttribute="centerX" id="yIO-gY-HbY"/>
<constraint firstItem="dRL-3M-rXu" firstAttribute="top" secondItem="e62-9h-gXP" secondAttribute="topMargin" id="zIS-hz-XAw"/>
</constraints>
<variation key="default">
<mask key="constraints">
<exclude reference="JWr-a8-Oxd"/>
<exclude reference="zIS-hz-XAw"/>
</mask>
</variation>
</view>
<connections>
<segue destination="7au-gI-Ntw" kind="unwind" identifier="unwindToHome" unwindAction="unwindToHome:" id="SU5-Ts-bmt"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="5uu-Qe-mNi" userLabel="First Responder" sceneMemberID="firstResponder"/>
<exit id="7au-gI-Ntw" userLabel="Exit" sceneMemberID="exit"/>
</objects>
<point key="canvasLocation" x="22" y="-929"/>
</scene>
<!--B-->
<scene sceneID="T4b-ot-V0m">
<objects>
<viewController title="B" id="A0V-En-EJl" customClass="ViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="paV-2x-1SP"/>
<viewControllerLayoutGuide type="bottom" id="dJb-g6-QTF"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="QBZ-F6-IFj">
<rect key="frame" x="0.0" y="64" width="600" height="487"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="256" verticalHuggingPriority="256" image="flash_on.png" translatesAutoresizingMaskIntoConstraints="NO" id="fu5-Ys-Uq9" customClass="CircleImageView">
<rect key="frame" x="172" y="116" width="256" height="256"/>
<constraints>
<constraint firstAttribute="width" constant="256" id="7d9-XY-dJb"/>
<constraint firstAttribute="height" constant="256" id="gKb-jg-fgz"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.94999999999999996" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="centerY" secondItem="fu5-Ys-Uq9" secondAttribute="centerY" id="2Yd-FF-lv3"/>
<constraint firstAttribute="centerX" secondItem="fu5-Ys-Uq9" secondAttribute="centerX" id="3yM-wB-hj1"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="B" image="icon-flash_on.png" id="1ez-db-05h"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="NGL-DL-qgy" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="148" y="-234"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="ch5-8q-zav">
<objects>
<navigationController id="aUL-89-tJW" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="scaleToFill" barStyle="black" translucent="NO" id="ig6-z0-idQ">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<color key="barTintColor" red="0.0" green="0.52156862745098043" blue="0.88627450980392153" alpha="1" colorSpace="calibratedRGB"/>
</navigationBar>
<connections>
<segue destination="eeg-iu-cjG" kind="relationship" relationship="rootViewController" id="3H5-V3-0NP"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="eK2-N2-23V" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-1024" y="-848"/>
</scene>
<!--Patterns-->
<scene sceneID="8gd-ga-mjo">
<objects>
<tabBarController title="Patterns" id="eeg-iu-cjG" customClass="PatternTabBarController" sceneMemberID="viewController">
<navigationItem key="navigationItem" title="Analytics Quickstart" id="tic-du-7VP">
<connections>
<outlet property="rightBarButtonItem" destination="hCL-4j-2le" id="uhg-Y0-IYr"/>
</connections>
</navigationItem>
<nil key="simulatedBottomBarMetrics"/>
<tabBar key="tabBar" contentMode="scaleToFill" translucent="NO" id="QrM-NQ-Tka">
<rect key="frame" x="0.0" y="0.0" width="320" height="49"/>
<autoresizingMask key="autoresizingMask"/>
<color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
<color key="tintColor" red="0.090196078430000007" green="0.68235294120000001" blue="0.79215686269999996" alpha="1" colorSpace="calibratedRGB"/>
<color key="selectedImageTintColor" red="0.090196078430000007" green="0.68235294120000001" blue="0.79215686269999996" alpha="1" colorSpace="calibratedRGB"/>
<userDefinedRuntimeAttributes>
<userDefinedRuntimeAttribute type="color" keyPath="tintColor">
<color key="value" red="0.090196078430000007" green="0.68235294120000001" blue="0.79215686269999996" alpha="1" colorSpace="calibratedRGB"/>
</userDefinedRuntimeAttribute>
</userDefinedRuntimeAttributes>
</tabBar>
<connections>
<segue destination="lVf-Ya-OQV" kind="relationship" relationship="viewControllers" id="25Z-jG-WWy"/>
<segue destination="A0V-En-EJl" kind="relationship" relationship="viewControllers" id="Hhg-ek-N8J"/>
<segue destination="Vqn-rV-AtV" kind="relationship" relationship="viewControllers" id="aTh-1Q-AeJ"/>
<segue destination="vhB-Nv-UYJ" kind="relationship" relationship="viewControllers" id="gcf-rD-9bU"/>
<segue destination="9aa-Nc-DxV" kind="presentation" identifier="pickFavoriteFood" id="iI6-jC-cjj"/>
</connections>
</tabBarController>
<placeholder placeholderIdentifier="IBFirstResponder" id="E1m-Ew-oHW" userLabel="First Responder" sceneMemberID="firstResponder"/>
<barButtonItem title="Share" id="hCL-4j-2le">
<connections>
<action selector="didTapShare:" destination="eeg-iu-cjG" id="Ojc-zG-nyi"/>
</connections>
</barButtonItem>
</objects>
<point key="canvasLocation" x="-660" y="-102"/>
</scene>
<!--C-->
<scene sceneID="ZvK-wS-pgM">
<objects>
<viewController title="C" id="Vqn-rV-AtV" customClass="ViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="eaF-dR-pcr"/>
<viewControllerLayoutGuide type="bottom" id="bYg-H7-CJJ"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="6t9-j2-aMP">
<rect key="frame" x="0.0" y="64" width="600" height="487"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="256" verticalHuggingPriority="256" image="tag_faces.png" translatesAutoresizingMaskIntoConstraints="NO" id="xHb-8o-vTm" customClass="CircleImageView">
<rect key="frame" x="172" y="116" width="256" height="256"/>
<constraints>
<constraint firstAttribute="height" constant="256" id="XZD-p0-75O"/>
<constraint firstAttribute="width" constant="256" id="y9B-ec-pwE"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.94999999999999996" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="centerX" secondItem="xHb-8o-vTm" secondAttribute="centerX" id="DDe-tY-AUH"/>
<constraint firstAttribute="centerY" secondItem="xHb-8o-vTm" secondAttribute="centerY" id="HbO-06-6Xc"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="C" image="icon-tag_faces.png" id="54A-Qd-hDy"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="w2d-ed-TnE" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-932" y="866"/>
</scene>
<!--D-->
<scene sceneID="yAq-nS-xJM">
<objects>
<viewController title="D" id="vhB-Nv-UYJ" customClass="ViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="FUr-9S-O0D"/>
<viewControllerLayoutGuide type="bottom" id="iEu-NN-tCj"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="7nq-AR-YU8">
<rect key="frame" x="0.0" y="64" width="600" height="487"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="256" verticalHuggingPriority="256" image="wb_incandescent.png" translatesAutoresizingMaskIntoConstraints="NO" id="8t4-48-5D9" customClass="CircleImageView">
<rect key="frame" x="172" y="116" width="256" height="256"/>
<constraints>
<constraint firstAttribute="height" constant="256" id="TIe-EE-hBP"/>
<constraint firstAttribute="width" constant="256" id="jmF-hb-TkU"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" white="0.94999999999999996" alpha="1" colorSpace="calibratedWhite"/>
<constraints>
<constraint firstAttribute="centerX" secondItem="8t4-48-5D9" secondAttribute="centerX" id="Ucl-Cn-Kus"/>
<constraint firstAttribute="centerY" secondItem="8t4-48-5D9" secondAttribute="centerY" id="mbq-gp-ekr"/>
</constraints>
</view>
<tabBarItem key="tabBarItem" title="D" image="icon-wb_incandescent.png" id="TIH-P3-nMk"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="q18-zn-iy7" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-192" y="1150"/>
</scene>
</scenes>
<resources>
<image name="favorite.png" width="200" height="200"/>
<image name="flash_on.png" width="200" height="200"/>
<image name="icon-favorite.png" width="32" height="32"/>
<image name="icon-flash_on.png" width="32" height="32"/>
<image name="icon-tag_faces.png" width="32" height="32"/>
<image name="icon-wb_incandescent.png" width="32" height="32"/>
<image name="tag_faces.png" width="200" height="200"/>
<image name="wb_incandescent.png" width="200" height="200"/>
</resources>
<color key="tintColor" red="0.090196078431372548" green="0.68235294117647061" blue="0.792156862745098" alpha="1" colorSpace="calibratedRGB"/>
</document>

View File

@ -1,27 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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;
/**
* CircleImageView is a UIImageView subclass that renders an image inside a
* circle that has a drop shadow. It should be given equal width and height.
*
* This is shared between the Objective-C and Swift versions of the samples.
*/
IB_DESIGNABLE
@interface CircleImageView : UIImageView
@end

View File

@ -1,59 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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 "CircleImageView.h"
@implementation CircleImageView
- (instancetype)initWithFrame:(CGRect)frame {
if ((self = [super initWithFrame:frame])) {
[self sharedInit];
}
return self;
}
- (id)initWithCoder:(NSCoder *)aDecoder {
if ((self = [super initWithCoder:aDecoder])) {
[self sharedInit];
}
return self;
}
- (void)sharedInit {
self.backgroundColor = [UIColor whiteColor];
[super setContentMode:UIViewContentModeCenter];
CALayer *layer = [super layer];
layer.shadowOffset = CGSizeMake(0, 2);
layer.shadowOpacity = 0.25;
layer.shadowColor = [[UIColor grayColor] CGColor];
layer.shadowRadius = 4.0;
layer.shadowOffset = CGSizeMake(0, 2);
}
- (void)layoutSubviews {
[super layoutSubviews];
CGSize size = self.bounds.size;
CGFloat dim = MAX(size.width, size.height);
self.layer.cornerRadius = dim / 2;
}
- (void)setContentMode:(UIViewContentMode)contentMode {
// ignore
}
@end

View File

@ -1,26 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
//
// For more information on setting up and running this sample code, see
// https://firebase.google.com/docs/analytics/ios/start
//
@import UIKit;
@interface FoodPickerViewController : UIViewController
@end

View File

@ -1,70 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
//
// For more information on setting up and running this sample code, see
// https://firebase.google.com/docs/analytics/ios/start
//
#import "FoodPickerViewController.h"
@import FirebaseAnalytics;
@interface FoodPickerViewController () <UIPickerViewDataSource, UIPickerViewDelegate>
@property (nonatomic, strong) NSArray *foodStuffs;
@end
@implementation FoodPickerViewController
- (void)viewDidLoad {
[super viewDidLoad];
self.foodStuffs = @[
@"Hot Dogs",
@"Hamburger",
@"Pizza"
];
}
- (void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row
inComponent:(NSInteger)component {
NSString *food = _foodStuffs[row];
[[NSUserDefaults standardUserDefaults] setValue:food forKey:@"favorite_food"];
[[NSUserDefaults standardUserDefaults] synchronize];
// [START user_property]
[FIRAnalytics setUserPropertyString:food forName:@"favorite_food"];
// [END user_property]
[self performSegueWithIdentifier:@"unwindToHome" sender:self];
}
- (NSInteger)numberOfComponentsInPickerView:(UIPickerView *)pickerView {
return 1;
}
- (NSInteger)pickerView:(UIPickerView *)pickerView numberOfRowsInComponent:(NSInteger)component {
return _foodStuffs.count;
}
- (NSString *)pickerView:(UIPickerView *)pickerView
titleForRow:(NSInteger)row
forComponent:(NSInteger)component {
return _foodStuffs[row];
}
@end

View File

@ -1,51 +0,0 @@
<?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>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIcons</key>
<dict/>
<key>CFBundleIcons~ipad</key>
<dict/>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0.1</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
</dict>
</plist>

View File

@ -1,28 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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;
/**
* PatternTabBarController exists as a subclass of UITabBarConttroller that
* supports a 'share' action. This will trigger a custom event to Analytics and
* display a dialog.
*/
@interface PatternTabBarController : UITabBarController
- (IBAction)didTapShare:(id)sender;
@end

View File

@ -1,67 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
//
// For more information on setting up and running this sample code, see
// https://firebase.google.com/docs/analytics/ios/start
//
#import "PatternTabBarController.h"
@import FirebaseAnalytics;
@implementation PatternTabBarController
- (void)viewDidAppear:(BOOL)animated {
// For first run, ask for the user's favorite food.
if (![self getUserFavoriteFood]) {
[self askForFavoriteFood];
}
}
- (void)didTapShare:(id)sender {
// [START custom_event_objc]
[FIRAnalytics logEventWithName:kFIREventSelectContent parameters:@{
kFIRParameterContentType:@"cont",
kFIRParameterItemID:@"1"
}];
// [END custom_event_objc]
NSString *title = [NSString stringWithFormat:@"Share: %@",
self.selectedViewController.title];
NSString *message =
@"Share event sent to Analytics; actual share not implemented in this quickstart";
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:title
message:message
delegate:nil
cancelButtonTitle:@"Ok"
otherButtonTitles:nil];
[alert show];
}
- (NSString *)getUserFavoriteFood {
return [[NSUserDefaults standardUserDefaults] valueForKey:@"favorite_food"];
}
- (void)askForFavoriteFood {
[self performSegueWithIdentifier:@"pickFavoriteFood" sender:self];
}
-(IBAction)unwindToHome:(UIStoryboardSegue *)segue {
}
@end

View File

@ -1,20 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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;
@interface ViewController : UIViewController
@end

View File

@ -1,43 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
//
// For more information on setting up and running this sample code, see
// https://firebase.google.com/docs/analytics/ios/start
//
#import "ViewController.h"
@import FirebaseAnalytics;
@implementation ViewController
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
NSString *name = [NSString stringWithFormat:@"Pattern~%@", self.title];
NSString *text = [NSString stringWithFormat:@"I'd love you to hear about %@", name];
// [START custom_event_objc]
[FIRAnalytics logEventWithName:@"share_image"
parameters:@{
@"name": name,
@"full_text": text
}];
// [END custom_event_objc]
}
@end

View File

@ -1,24 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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>
#import "AppDelegate.h"
int main(int argc, char * argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

View File

@ -1,38 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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
import Firebase
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// [START tracker_swift]
FIRApp.configure()
// [END tracker_swift]
// Set a white background so that patterns are showcased.
window?.backgroundColor = UIColor.whiteColor()
return true
}
}

View File

@ -1,56 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
//
// For more information on setting up and running this sample code, see
// https://firebase.google.com/docs/analytics/ios/start
//
import Foundation
import FirebaseAnalytics
@objc(FoodPickerViewController) // match the ObjC symbol name inside Storyboard
class FoodPickerViewController: UIViewController, UIPickerViewDelegate, UIPickerViewDataSource {
let foodStuffs = ["Hot Dogs", "Hamburger", "Pizza"]
func pickerView(pickerView: UIPickerView, didSelectRow row: Int, inComponent component: Int) {
let food = foodStuffs[row]
NSUserDefaults.standardUserDefaults().setValue(food, forKey: "favorite_food")
NSUserDefaults.standardUserDefaults().synchronize()
// [START user_property]
FIRAnalytics.setUserPropertyString(food, forName: "favorite_food")
// [END user_property]
performSegueWithIdentifier("unwindToHome", sender: self)
}
func pickerView(pickerView: UIPickerView, numberOfRowsInComponent component: Int) -> Int {
return foodStuffs.count
}
func numberOfComponentsInPickerView(pickerView: UIPickerView) -> Int {
return 1
}
func pickerView(pickerView: UIPickerView, titleForRow row: Int, forComponent component: Int) -> String? {
return foodStuffs[row];
}
}

View File

@ -1,60 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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 Foundation
import FirebaseAnalytics
/**
* PatternTabBarController exists as a subclass of UITabBarConttroller that
* supports a 'share' action. This will trigger a custom event to Analytics and
* display a dialog.
*/
@objc(PatternTabBarController) // match the ObjC symbol name inside Storyboard
class PatternTabBarController: UITabBarController {
override func viewDidAppear(animated: Bool) {
if (getUserFavoriteFood() == nil) {
askForFavoriteFood()
}
}
@IBAction func didTapShare(sender: AnyObject) {
// [START custom_event_swift]
FIRAnalytics.logEventWithName(kFIREventSelectContent, parameters: [
kFIRParameterContentType:"cont",
kFIRParameterItemID:"1"
])
// [END custom_event_swift]
let title = "Share: \(self.selectedViewController!.title!)",
message = "Share event sent to Analytics; actual share not implemented in this quickstart",
alert = UIAlertView(title: title, message: message, delegate: nil, cancelButtonTitle: "Ok")
alert.show()
}
@IBAction func unwindToHome (segue: UIStoryboardSegue?) {
}
func getUserFavoriteFood() -> String? {
return NSUserDefaults.standardUserDefaults().valueForKey("favorite_food") as! String?
}
func askForFavoriteFood() {
performSegueWithIdentifier("pickFavoriteFood", sender: self)
}
}

View File

@ -1,37 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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
import FirebaseAnalytics
@objc(ViewController) // match the ObjC symbol name inside Storyboard
class ViewController: UIViewController {
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(true)
let name = "Pattern~\(title!)",
text = "I'd love you to hear about\(name)"
// [START custom_event_swift]
FIRAnalytics.logEventWithName("share_image", parameters: [
"name": name,
"full_text": text
])
// [END custom_event_swift]
}
}

View File

@ -1,96 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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>
#import <XCTest/XCTest.h>
#import <Google/Analytics.h>
#import "LogWrapper.h"
static NSString * const kSearchTerm = @": Sending hit(s) ";
@interface AppTests : XCTestCase
@end
@implementation AppTests {
LogWrapper *_logWrapper;
UITabBarController *_patternsController;
GAI *_gai;
GAILogLevel _previousLogLevel;
}
- (instancetype)init {
if ((self = [super init])) {
_gai = [GAI sharedInstance];
}
return self;
}
- (void)setUp {
_logWrapper = [[LogWrapper alloc] init];
_previousLogLevel = _gai.logger.logLevel;
_gai.logger.logLevel = kGAILogLevelVerbose; // force verbose logging for test
UIWindow *window = [UIApplication sharedApplication].keyWindow;
UIViewController *rootViewController = window.rootViewController;
for (UIViewController *candidate in rootViewController.childViewControllers) {
if ([candidate isKindOfClass:[UITabBarController class]]) {
_patternsController = (UITabBarController *)candidate;
break;
}
}
}
- (void)tearDown {
_logWrapper = nil;
_gai.logger.logLevel = _previousLogLevel;
}
- (void)testLogs {
XCTestExpectation *expectation =
[self expectationWithDescription:@"Send event inside logs"];
[_logWrapper lines]; // force clear
// Trigger a new, different tab to be shown.
XCTAssertEqual(_patternsController.selectedIndex, 0,
@"Expected left-most index to be initially selected");
_patternsController.selectedIndex = 2;
// Check the logs constantly until a send message is found.
NSTimer *timer = [NSTimer scheduledTimerWithTimeInterval:0.1
target:self
selector:@selector(checkTimer:)
userInfo:expectation
repeats:YES];
[self waitForExpectationsWithTimeout:10.0 handler:nil];
[timer invalidate];
}
- (void)checkTimer:(NSTimer *)timer {
XCTestExpectation *expectation = timer.userInfo;
NSArray *lines = [_logWrapper lines];
for (NSString *line in lines) {
if ([line containsString:kSearchTerm]) {
[expectation fulfill];
break;
}
}
}
@end

View File

@ -1,32 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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 <Foundation/Foundation.h>
/**
* LogWrapper replaces the current stderr, matched to its lifetime. Any lines written to stderr
* during this time can be retrieved by the -lines method.
*/
@interface LogWrapper : NSObject
/**
* Returns any lines (as NSString instances) written since LogWrapper was created, or the last
* call to this method. This may return a nil/empty array if nothing was written.
*/
- (NSArray *)lines;
@end

View File

@ -1,65 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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 "LogWrapper.h"
#include <stdlib.h>
#include <stdio.h>
#define ARRAYSIZE(x) (sizeof(x)/sizeof(x[0]))
@implementation LogWrapper {
char _tempLogFile[64];
NSFileHandle *_handle;
int _dupFd;
}
- (instancetype)init {
if ((self = [super init])) {
_dupFd = dup(fileno(stderr));
snprintf(_tempLogFile, ARRAYSIZE(_tempLogFile), "/tmp/objc-logwrapper.XXXXXX");
int fd = mkstemp(_tempLogFile);
NSLog(@"LogWrapper writing to: %s", _tempLogFile);
freopen(_tempLogFile, "w+", stderr);
_handle = [[NSFileHandle alloc] initWithFileDescriptor:fd closeOnDealloc:YES];
}
return self;
}
- (void)dealloc {
unlink(_tempLogFile);
NSLog(@"~LogWrapper removed: %s", _tempLogFile);
dup2(_dupFd, fileno(stderr));
close(_dupFd);
}
- (NSArray *)lines {
NSData *data = [_handle readDataToEndOfFile];
[_handle seekToFileOffset:data.length];
if (data == nil || !data.bytes) {
return nil;
}
NSString *allData = [NSString stringWithUTF8String:(const char *)[data bytes]];
return [allData componentsSeparatedByString:@"\n"];
}
@end

View File

@ -1,6 +0,0 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}

View File

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "favorite.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "favorite_2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "favorite_3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "flash_on.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "flash_on_2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "flash_on_3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 989 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

View File

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "icon-favorite.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-favorite_2x-1.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-favorite_3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 470 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 878 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "icon-flash_on.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-flash_on_2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-flash_on_3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 334 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 476 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 674 B

View File

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "icon-tag_faces.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-tag_faces_2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-tag_faces_3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 648 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "icon-wb_incandescent.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "icon-wb_incandescent_2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "icon-wb_incandescent_3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 475 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 785 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1014 B

View File

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "tag_faces.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "tag_faces_2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "tag_faces_3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

View File

@ -1,23 +0,0 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "wb_incandescent.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "wb_incandescent_2x.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "wb_incandescent_3x.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.9 KiB

View File

@ -1,12 +0,0 @@
# AnalyticsExample
use_frameworks!
platform :ios, '7.0'
pod 'Firebase/Analytics'
target 'AnalyticsExample' do
end
target 'AnalyticsExampleSwift' do
end
target 'AnalyticsExampleTests' do
end

View File

@ -1,43 +0,0 @@
Firebase Analytics Quickstart
===========================
Firebase Analytics iOS Quickstart app demonstrates collecting app usage analytics via the
Analytics API.
Introduction
------------
- [Read more about Firebase Analytics](https://firebase.google.com/docs/analytics)
Getting Started
---------------
- [Add Firebase to your iOS Project](https://firebase.google.com/docs/ios/setup).
- Run the sample on your iOS device or emulator.
Note: You will need Swift 2.0 to run the Swift version of this quickstart.
Support
-------
- [Firebase Support](https://firebase.google.com/support/)
License
-------
Copyright 2015 Google, Inc.
Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements. See the NOTICE file distributed with this work for
additional information regarding copyright ownership. The ASF licenses this
file to you 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.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

View File

@ -1,476 +0,0 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
3293AA641CE2347300BBD8A5 /* web in Resources */ = {isa = PBXBuildFile; fileRef = 3293AA631CE2347300BBD8A5 /* web */; };
3293AA651CE2347300BBD8A5 /* web in Resources */ = {isa = PBXBuildFile; fileRef = 3293AA631CE2347300BBD8A5 /* web */; };
5F5A53521ADE670C00F81DF0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A53511ADE670C00F81DF0 /* main.m */; };
5F5A53551ADE670C00F81DF0 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A53541ADE670C00F81DF0 /* AppDelegate.m */; };
5F5A53581ADE670C00F81DF0 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A53571ADE670C00F81DF0 /* ViewController.m */; };
5F5A535B1ADE670C00F81DF0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F5A53591ADE670C00F81DF0 /* Main.storyboard */; };
5F5A537E1ADE67D500F81DF0 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A537D1ADE67D500F81DF0 /* AppDelegate.swift */; };
5F5A53801ADE67D500F81DF0 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5A537F1ADE67D500F81DF0 /* ViewController.swift */; };
5F5A539C1ADE69AA00F81DF0 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 5F5A53591ADE670C00F81DF0 /* Main.storyboard */; };
5F99610A1AE0CF4F0034F503 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5F9961061AE0CF4F0034F503 /* Images.xcassets */; };
5F99610B1AE0CF4F0034F503 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 5F9961061AE0CF4F0034F503 /* Images.xcassets */; };
5F99610C1AE0CF4F0034F503 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5F9961071AE0CF4F0034F503 /* LaunchScreen.xib */; };
5F99610D1AE0CF4F0034F503 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5F9961071AE0CF4F0034F503 /* LaunchScreen.xib */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
3293AA5E1CE1F12D00BBD8A5 /* AppIndexingExampleSwift.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AppIndexingExampleSwift.entitlements; sourceTree = "<group>"; };
3293AA621CE1FDAC00BBD8A5 /* AppIndexingExample.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.xml; path = AppIndexingExample.entitlements; sourceTree = "<group>"; };
3293AA631CE2347300BBD8A5 /* web */ = {isa = PBXFileReference; lastKnownFileType = folder; path = web; sourceTree = "<group>"; };
5F5A534C1ADE670C00F81DF0 /* AppIndexingExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AppIndexingExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
5F5A53501ADE670C00F81DF0 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
5F5A53511ADE670C00F81DF0 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
5F5A53531ADE670C00F81DF0 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
5F5A53541ADE670C00F81DF0 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
5F5A53561ADE670C00F81DF0 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
5F5A53571ADE670C00F81DF0 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
5F5A535A1ADE670C00F81DF0 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
5F5A53791ADE67D500F81DF0 /* AppIndexingExampleSwift.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AppIndexingExampleSwift.app; sourceTree = BUILT_PRODUCTS_DIR; };
5F5A537D1ADE67D500F81DF0 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
5F5A537F1ADE67D500F81DF0 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
5F5A539B1ADE695B00F81DF0 /* BridgingHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BridgingHeader.h; sourceTree = "<group>"; };
5F9961061AE0CF4F0034F503 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
5F9961071AE0CF4F0034F503 /* LaunchScreen.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = LaunchScreen.xib; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
5F5A53491ADE670C00F81DF0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
5F5A53761ADE67D500F81DF0 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
5F5A53431ADE670C00F81DF0 = {
isa = PBXGroup;
children = (
3293AA631CE2347300BBD8A5 /* web */,
5F5A534E1ADE670C00F81DF0 /* AppIndexingExample */,
5F5A537A1ADE67D500F81DF0 /* AppIndexingExampleSwift */,
5F5A534D1ADE670C00F81DF0 /* Products */,
5F9961041AE0CF4F0034F503 /* Shared */,
);
sourceTree = "<group>";
};
5F5A534D1ADE670C00F81DF0 /* Products */ = {
isa = PBXGroup;
children = (
5F5A534C1ADE670C00F81DF0 /* AppIndexingExample.app */,
5F5A53791ADE67D500F81DF0 /* AppIndexingExampleSwift.app */,
);
name = Products;
sourceTree = "<group>";
};
5F5A534E1ADE670C00F81DF0 /* AppIndexingExample */ = {
isa = PBXGroup;
children = (
3293AA621CE1FDAC00BBD8A5 /* AppIndexingExample.entitlements */,
5F5A53531ADE670C00F81DF0 /* AppDelegate.h */,
5F5A53541ADE670C00F81DF0 /* AppDelegate.m */,
5F5A53561ADE670C00F81DF0 /* ViewController.h */,
5F5A53571ADE670C00F81DF0 /* ViewController.m */,
5F5A534F1ADE670C00F81DF0 /* Supporting Files */,
);
path = AppIndexingExample;
sourceTree = "<group>";
};
5F5A534F1ADE670C00F81DF0 /* Supporting Files */ = {
isa = PBXGroup;
children = (
5F5A53591ADE670C00F81DF0 /* Main.storyboard */,
5F5A53501ADE670C00F81DF0 /* Info.plist */,
5F5A53511ADE670C00F81DF0 /* main.m */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
5F5A537A1ADE67D500F81DF0 /* AppIndexingExampleSwift */ = {
isa = PBXGroup;
children = (
3293AA5E1CE1F12D00BBD8A5 /* AppIndexingExampleSwift.entitlements */,
5F5A537D1ADE67D500F81DF0 /* AppDelegate.swift */,
5F5A537F1ADE67D500F81DF0 /* ViewController.swift */,
5F5A537B1ADE67D500F81DF0 /* Supporting Files */,
);
path = AppIndexingExampleSwift;
sourceTree = "<group>";
};
5F5A537B1ADE67D500F81DF0 /* Supporting Files */ = {
isa = PBXGroup;
children = (
5F5A539B1ADE695B00F81DF0 /* BridgingHeader.h */,
);
name = "Supporting Files";
sourceTree = "<group>";
};
5F9961041AE0CF4F0034F503 /* Shared */ = {
isa = PBXGroup;
children = (
5F9961061AE0CF4F0034F503 /* Images.xcassets */,
5F9961071AE0CF4F0034F503 /* LaunchScreen.xib */,
);
name = Shared;
path = ../shared;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
5F5A534B1ADE670C00F81DF0 /* AppIndexingExample */ = {
isa = PBXNativeTarget;
buildConfigurationList = 5F5A536F1ADE670C00F81DF0 /* Build configuration list for PBXNativeTarget "AppIndexingExample" */;
buildPhases = (
5F5A53481ADE670C00F81DF0 /* Sources */,
5F5A53491ADE670C00F81DF0 /* Frameworks */,
5F5A534A1ADE670C00F81DF0 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = AppIndexingExample;
productName = AppIndexingExample;
productReference = 5F5A534C1ADE670C00F81DF0 /* AppIndexingExample.app */;
productType = "com.apple.product-type.application";
};
5F5A53781ADE67D500F81DF0 /* AppIndexingExampleSwift */ = {
isa = PBXNativeTarget;
buildConfigurationList = 5F5A53991ADE67D500F81DF0 /* Build configuration list for PBXNativeTarget "AppIndexingExampleSwift" */;
buildPhases = (
5F5A53751ADE67D500F81DF0 /* Sources */,
5F5A53761ADE67D500F81DF0 /* Frameworks */,
5F5A53771ADE67D500F81DF0 /* Resources */,
);
buildRules = (
);
dependencies = (
);
name = AppIndexingExampleSwift;
productName = AppIndexingExampleSwift;
productReference = 5F5A53791ADE67D500F81DF0 /* AppIndexingExampleSwift.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
5F5A53441ADE670C00F81DF0 /* Project object */ = {
isa = PBXProject;
attributes = {
LastSwiftUpdateCheck = 0710;
LastUpgradeCheck = 0730;
ORGANIZATIONNAME = "Google Inc.";
TargetAttributes = {
5F5A534B1ADE670C00F81DF0 = {
CreatedOnToolsVersion = 6.3;
SystemCapabilities = {
com.apple.SafariKeychain = {
enabled = 0;
};
};
};
5F5A53781ADE67D500F81DF0 = {
CreatedOnToolsVersion = 6.3;
SystemCapabilities = {
com.apple.SafariKeychain = {
enabled = 0;
};
};
};
};
};
buildConfigurationList = 5F5A53471ADE670C00F81DF0 /* Build configuration list for PBXProject "AppIndexingExample" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
mainGroup = 5F5A53431ADE670C00F81DF0;
productRefGroup = 5F5A534D1ADE670C00F81DF0 /* Products */;
projectDirPath = "";
projectRoot = "";
targets = (
5F5A534B1ADE670C00F81DF0 /* AppIndexingExample */,
5F5A53781ADE67D500F81DF0 /* AppIndexingExampleSwift */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
5F5A534A1ADE670C00F81DF0 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
3293AA641CE2347300BBD8A5 /* web in Resources */,
5F99610C1AE0CF4F0034F503 /* LaunchScreen.xib in Resources */,
5F99610A1AE0CF4F0034F503 /* Images.xcassets in Resources */,
5F5A535B1ADE670C00F81DF0 /* Main.storyboard in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
5F5A53771ADE67D500F81DF0 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
3293AA651CE2347300BBD8A5 /* web in Resources */,
5F99610D1AE0CF4F0034F503 /* LaunchScreen.xib in Resources */,
5F5A539C1ADE69AA00F81DF0 /* Main.storyboard in Resources */,
5F99610B1AE0CF4F0034F503 /* Images.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
5F5A53481ADE670C00F81DF0 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
5F5A53581ADE670C00F81DF0 /* ViewController.m in Sources */,
5F5A53551ADE670C00F81DF0 /* AppDelegate.m in Sources */,
5F5A53521ADE670C00F81DF0 /* main.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
5F5A53751ADE67D500F81DF0 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
5F5A53801ADE67D500F81DF0 /* ViewController.swift in Sources */,
5F5A537E1ADE67D500F81DF0 /* AppDelegate.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin PBXVariantGroup section */
5F5A53591ADE670C00F81DF0 /* Main.storyboard */ = {
isa = PBXVariantGroup;
children = (
5F5A535A1ADE670C00F81DF0 /* Base */,
);
name = Main.storyboard;
sourceTree = "<group>";
};
/* End PBXVariantGroup section */
/* Begin XCBuildConfiguration section */
5F5A536D1ADE670C00F81DF0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PREPROCESSOR_DEFINITIONS = (
"DEBUG=1",
"$(inherited)",
);
GCC_SYMBOLS_PRIVATE_EXTERN = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = YES;
ONLY_ACTIVE_ARCH = YES;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
};
name = Debug;
};
5F5A536E1ADE670C00F81DF0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
CLANG_CXX_LIBRARY = "libc++";
CLANG_ENABLE_MODULES = YES;
CLANG_ENABLE_OBJC_ARC = YES;
CLANG_WARN_BOOL_CONVERSION = YES;
CLANG_WARN_CONSTANT_CONVERSION = YES;
CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
CLANG_WARN_EMPTY_BODY = YES;
CLANG_WARN_ENUM_CONVERSION = YES;
CLANG_WARN_INT_CONVERSION = YES;
CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
CLANG_WARN_UNREACHABLE_CODE = YES;
CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
COPY_PHASE_STRIP = YES;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
GCC_WARN_UNDECLARED_SELECTOR = YES;
GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
IPHONEOS_DEPLOYMENT_TARGET = 7.0;
MTL_ENABLE_DEBUG_INFO = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = "1,2";
VALIDATE_PRODUCT = YES;
};
name = Release;
};
5F5A53701ADE670C00F81DF0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CODE_SIGN_IDENTITY = "iPhone Developer";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
"$(PROJECT_DIR)",
);
INFOPLIST_FILE = AppIndexingExample/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.quickstart.AppIndexingExample;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Debug;
};
5F5A53711ADE670C00F81DF0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CODE_SIGN_IDENTITY = "iPhone Developer";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
);
HEADER_SEARCH_PATHS = (
"$(inherited)",
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include,
"$(PROJECT_DIR)",
);
INFOPLIST_FILE = AppIndexingExample/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.quickstart.AppIndexingExample;
PRODUCT_NAME = "$(TARGET_NAME)";
};
name = Release;
};
5F5A53951ADE67D500F81DF0 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CODE_SIGN_IDENTITY = "iPhone Developer";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
);
INFOPLIST_FILE = "$(SRCROOT)/AppIndexingExample/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.quickstart.AppIndexingExample;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = AppIndexingExampleSwift/BridgingHeader.h;
};
name = Debug;
};
5F5A53961ADE67D500F81DF0 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = YES;
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CODE_SIGN_IDENTITY = "iPhone Developer";
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"$(PROJECT_DIR)",
);
INFOPLIST_FILE = "$(SRCROOT)/AppIndexingExample/Info.plist";
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = com.google.firebase.quickstart.AppIndexingExample;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_OBJC_BRIDGING_HEADER = AppIndexingExampleSwift/BridgingHeader.h;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
5F5A53471ADE670C00F81DF0 /* Build configuration list for PBXProject "AppIndexingExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
5F5A536D1ADE670C00F81DF0 /* Debug */,
5F5A536E1ADE670C00F81DF0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
5F5A536F1ADE670C00F81DF0 /* Build configuration list for PBXNativeTarget "AppIndexingExample" */ = {
isa = XCConfigurationList;
buildConfigurations = (
5F5A53701ADE670C00F81DF0 /* Debug */,
5F5A53711ADE670C00F81DF0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
5F5A53991ADE67D500F81DF0 /* Build configuration list for PBXNativeTarget "AppIndexingExampleSwift" */ = {
isa = XCConfigurationList;
buildConfigurations = (
5F5A53951ADE67D500F81DF0 /* Debug */,
5F5A53961ADE67D500F81DF0 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 5F5A53441ADE670C00F81DF0 /* Project object */;
}

View File

@ -1,4 +0,0 @@
BasedOnStyle: Google
ColumnLimit: 100
BinPackParameters: false
AllowAllParametersOfDeclarationOnNextLine: true

View File

@ -1,24 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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;
@interface AppDelegate : UIResponder<UIApplicationDelegate>
@property(strong, nonatomic) UIWindow *window;
@property(nonatomic, strong) NSURL *currentDeepLink;
@end

View File

@ -1,53 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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 "AppDelegate.h"
@import Firebase;
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application
didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[FIRApp configure];
// [START register_app]
// Replace 123456 with the App Store ID of your app.
// Registering your application allows your app to be included in
// Google Search results.
[[FIRAppIndexing sharedInstance] registerApp:123456];
// [END register_app]
return YES;
}
// [START handle_link]
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
self.currentDeepLink = url;
return YES;
}
// [END handle_link]
// [START handle_universal_link]
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler {
self.currentDeepLink = [userActivity webpageURL];
return YES;
}
// [END handle_universal_link]
@end

View File

@ -1,5 +0,0 @@
<?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/>
</plist>

View File

@ -1,41 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6751" systemVersion="13F1077" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6736"/>
<capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
</dependencies>
<objects>
<placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
<placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
<view contentMode="scaleToFill" id="iN0-l3-epB">
<rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Copyright (c) 2015 Shawn Simister. All rights reserved." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
<rect key="frame" x="20" y="439" width="441" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="app-indexing-objective-c" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
<rect key="frame" x="20" y="140" width="441" height="43"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
<constraints>
<constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
<constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
<constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/>
<constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/>
<constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/>
<constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
</constraints>
<nil key="simulatedStatusBarMetrics"/>
<freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
<point key="canvasLocation" x="548" y="455"/>
</view>
</objects>
</document>

View File

@ -1,72 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10109" systemVersion="15E65" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="jqF-xI-3wl">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10083"/>
<capability name="Constraints to layout margins" minToolsVersion="6.0"/>
</dependencies>
<scenes>
<!--App Indexing Example-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController title="App Indexing Example" id="BYZ-38-t0r" customClass="ViewController" sceneMemberID="viewController">
<layoutGuides>
<viewControllerLayoutGuide type="top" id="y3c-jy-aDJ"/>
<viewControllerLayoutGuide type="bottom" id="wfy-db-euE"/>
</layoutGuides>
<view key="view" contentMode="scaleToFill" id="8bC-Xf-vdC">
<rect key="frame" x="0.0" y="64" width="600" height="536"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" misplaced="YES" text="Waiting for link" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="guy-rd-SdL">
<rect key="frame" x="114.5" y="35" width="444.5" height="21"/>
<rect key="contentStretch" x="1" y="0.0" width="1" height="1"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" red="0.396078431372549" green="0.49019607843137253" blue="0.54509803921568623" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
<label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" ambiguous="YES" misplaced="YES" text="Deep Link:" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZMr-ts-hEf">
<rect key="frame" x="20" y="35" width="86.5" height="21"/>
<fontDescription key="fontDescription" type="boldSystem" pointSize="17"/>
<color key="textColor" red="0.396078431372549" green="0.49019607843137253" blue="0.54509803921568623" alpha="1" colorSpace="calibratedRGB"/>
<nil key="highlightedColor"/>
</label>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="calibratedRGB"/>
<constraints>
<constraint firstItem="ZMr-ts-hEf" firstAttribute="top" secondItem="y3c-jy-aDJ" secondAttribute="bottom" constant="35" id="CJz-Ia-XFr"/>
<constraint firstItem="guy-rd-SdL" firstAttribute="centerY" secondItem="ZMr-ts-hEf" secondAttribute="centerY" id="Emn-Yq-4Yq"/>
<constraint firstAttribute="trailingMargin" secondItem="guy-rd-SdL" secondAttribute="trailing" constant="21" id="UjG-wn-mLK"/>
<constraint firstItem="guy-rd-SdL" firstAttribute="leading" secondItem="ZMr-ts-hEf" secondAttribute="trailing" constant="8" id="hs7-vY-wqx"/>
<constraint firstAttribute="leadingMargin" secondItem="ZMr-ts-hEf" secondAttribute="leading" id="sdo-Gi-RID"/>
<constraint firstItem="guy-rd-SdL" firstAttribute="top" secondItem="8bC-Xf-vdC" secondAttribute="topMargin" constant="35" id="ykq-Zd-VFx"/>
</constraints>
</view>
<navigationItem key="navigationItem" title="App Indexing Example" id="zgm-Gp-J65"/>
<connections>
<outlet property="deepLinkLabel" destination="guy-rd-SdL" id="pIC-K7-vaK"/>
</connections>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="332" y="307"/>
</scene>
<!--Navigation Controller-->
<scene sceneID="x9N-6p-bGZ">
<objects>
<navigationController id="jqF-xI-3wl" sceneMemberID="viewController">
<navigationBar key="navigationBar" contentMode="center" barStyle="black" translucent="NO" id="fqK-cu-sD2">
<rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
<autoresizingMask key="autoresizingMask"/>
<color key="barTintColor" red="0.0" green="0.52156862745098043" blue="0.88627450980392153" alpha="1" colorSpace="calibratedRGB"/>
</navigationBar>
<connections>
<segue destination="BYZ-38-t0r" kind="relationship" relationship="rootViewController" id="R3f-6G-brj"/>
</connections>
</navigationController>
<placeholder placeholderIdentifier="IBFirstResponder" id="gvu-V1-kfd" userLabel="First Responder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="-441" y="385"/>
</scene>
</scenes>
</document>

View File

@ -1,69 +0,0 @@
<?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>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIcons</key>
<dict/>
<key>CFBundleIcons~ipad</key>
<dict/>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleURLName</key>
<string>com.example.app</string>
<key>CFBundleURLSchemes</key>
<array>
<string>example-app</string>
</array>
</dict>
</array>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>UILaunchStoryboardName</key>
<string>LaunchScreen</string>
<key>UIMainStoryboardFile</key>
<string>Main</string>
<key>UIRequiredDeviceCapabilities</key>
<array>
<string>armv7</string>
</array>
<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleBlackOpaque</string>
<key>UISupportedInterfaceOrientations</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
</array>
<key>UISupportedInterfaceOrientations~ipad</key>
<array>
<string>UIInterfaceOrientationPortrait</string>
<string>UIInterfaceOrientationPortraitUpsideDown</string>
<string>UIInterfaceOrientationLandscapeLeft</string>
<string>UIInterfaceOrientationLandscapeRight</string>
</array>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
</dict>
</plist>

View File

@ -1,23 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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>
@interface ViewController : UIViewController
@property(nonatomic, strong) IBOutlet UILabel *deepLinkLabel;
@end

View File

@ -1,43 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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 "AppDelegate.h"
#import "ViewController.h"
@implementation ViewController
// [START display_link]
- (void)viewDidLoad {
[super viewDidLoad];
// This notification is sent the first time the app launches
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationBecameActive:)
name:UIApplicationDidBecomeActiveNotification
object:nil];
}
- (void)applicationBecameActive:(NSNotification *)notification {
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
if (appDelegate.currentDeepLink != nil) {
self.deepLinkLabel.text = appDelegate.currentDeepLink.lastPathComponent;
} else {
self.deepLinkLabel.text = @"No incoming link";
}
}
// [END display_link]
@end

View File

@ -1,24 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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>
#import "AppDelegate.h"
int main(int argc, char* argv[]) {
@autoreleasepool {
return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
}
}

View File

@ -1,58 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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
import Firebase
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var currentDeepLink: NSURL?
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
FIRApp.configure()
// [START register_app]
// Replace 123456 with the App Store ID of your app.
// Registering your application allows your app to be included in
// Google Search results.
FIRAppIndexing.sharedInstance().registerApp(123456)
// [END register_app]
return true
}
// [START handle_link]
func application(application: UIApplication,
openURL url: NSURL,
sourceApplication: String?,
annotation: AnyObject) -> Bool {
currentDeepLink = url
return true;
}
// [END handle_link]
// [START handle_universal_link]
@available(iOS 8.0, *)
func application(application: UIApplication,
continueUserActivity userActivity: NSUserActivity,
restorationHandler: ([AnyObject]?) -> Void) -> Bool {
currentDeepLink = userActivity.webpageURL
return true
}
// [END handle_universal_link]
}

View File

@ -1,5 +0,0 @@
<?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/>
</plist>

View File

@ -1,17 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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.
//
// Use this file to import your target's public headers that you would like to expose to Swift.
//

View File

@ -1,45 +0,0 @@
//
// Copyright (c) 2015 Google Inc.
//
// 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
@objc(ViewController) // match the ObjC symbol name inside Storyboard
class ViewController: UIViewController {
@IBOutlet var deepLinkLabel: UILabel!
// [START display_link]
override func viewDidLoad() {
super.viewDidLoad()
NSNotificationCenter.defaultCenter().addObserver(self,
selector:#selector(ViewController.applicationBecameActive(_:)),
name: UIApplicationDidBecomeActiveNotification,
object: nil)
}
func applicationBecameActive(notification: NSNotification){
let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate
if let deeplink = appDelegate.currentDeepLink {
// Show content based on incoming link
deepLinkLabel.text = deeplink.lastPathComponent
} else {
deepLinkLabel.text = "No incoming link";
}
}
// [END display_link]
}

View File

@ -1,10 +0,0 @@
# AppIndexingExample
use_frameworks!
platform :ios, '7.0'
pod 'Firebase/AppIndexing'
target 'AppIndexingExample' do
end
target 'AppIndexingExampleSwift' do
end

View File

@ -1,58 +0,0 @@
Firebase App Indexing Quickstart
==============================
The Firebase App Indexing iOS quickstart demonstrates how to help get your app found in Google Search.
Introduction
------------
- [Read more about Firebase App Indexing](https://firebase.google.com)
Getting Started
---------------
- [Add Firebase to your iOS Project](https://firebase.google.com/docs/ios/setup).
- In web/public/apple-app-site-association file, replace <YOUR-APPID-OR-TEAMID> with your
App ID or your Team ID.
- Get the [Firebase Command Line Interface (CLI)](https://firebase.google.com/docs/hosting/quickstart#install-the-firebase-cli) Step 1
- Run `firebase init`
- Select your current Firebase project
- Hit Enter to select the default public directory as your website root.
- Run `firebase deploy`
- In the **Capabilities** tab of XCode, turn on **Associated Domains**. Add
your Firebase hosting domain in the format applinks:<YOUR-DOMAIN>. Do not include "https://".
You can find your Firebase hosting domain in the Hosting section of the
Firebase console.
- Run the sample on your iOS device.
- From Safari on your iOS device, go to your Firebase hosting URL.
- Select one of the available links, *Go to content* or *Go to other content*
- If you are not automatically redirected to the app, swipe down in Safari to
reveal the *OPEN* option that takes you to the app.
- Verify that the deep link data matches the link clicked.
Note: You will need Swift 2.0 to run the Swift version of this quickstart.
Support
-------
- [Firebase Support](https://firebase.google.com/support/)
License
-------
Copyright 2015 Google, Inc.
Licensed to the Apache Software Foundation (ASF) under one or more contributor
license agreements. See the NOTICE file distributed with this work for
additional information regarding copyright ownership. The ASF licenses this
file to you 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.

View File

@ -1,11 +0,0 @@
{
"applinks": {
"apps": [],
"details": [
{
"appID": "<YOUR-APPID-OR-TEAMID>.com.google.firebase.quickstart.AppIndexingExample",
"paths": ["*"]
}
]
}
}

Some files were not shown because too many files have changed in this diff Show More