diff --git a/CHANGELOG.md b/CHANGELOG.md
index 32cce63..286d247 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,8 @@
## Develop Branch
+## v1.1.1
+
* Update pods [#18](https://github.com/polydice/iCook-tvOS/pull/18)
* Update fastlane and gems [#19](https://github.com/polydice/iCook-tvOS/pull/19)
diff --git a/Demo-Info.plist b/Demo-Info.plist
new file mode 100644
index 0000000..496b849
--- /dev/null
+++ b/Demo-Info.plist
@@ -0,0 +1,34 @@
+
+
+
+
+ CFBundleDevelopmentRegion
+ en
+ CFBundleExecutable
+ $(EXECUTABLE_NAME)
+ CFBundleIdentifier
+ $(PRODUCT_BUNDLE_IDENTIFIER)
+ CFBundleInfoDictionaryVersion
+ 6.0
+ CFBundleName
+ $(PRODUCT_NAME)
+ CFBundlePackageType
+ APPL
+ CFBundleShortVersionString
+ $(MARKETING_VERSION)
+ CFBundleSignature
+ ????
+ CFBundleVersion
+ $(CURRENT_PROJECT_VERSION)
+ FacebookAutoInitEnabled
+
+ LSRequiresIPhoneOS
+
+ UILaunchStoryboardName
+ DemoLaunchScreen
+ UIRequiredDeviceCapabilities
+
+ arm64
+
+
+
diff --git a/iCookTV.xcodeproj/project.pbxproj b/iCookTV.xcodeproj/project.pbxproj
index 42d1ad4..3529e83 100644
--- a/iCookTV.xcodeproj/project.pbxproj
+++ b/iCookTV.xcodeproj/project.pbxproj
@@ -65,8 +65,62 @@
B5EE17501DC509B8009DA1AE /* DataFetching.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5EE174F1DC509B8009DA1AE /* DataFetching.swift */; };
B5EFE6C21DC600FF00236D1A /* VideosGridLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5EFE6C11DC600FF00236D1A /* VideosGridLayout.swift */; };
B5F7BF4C1BA9C95F00A75099 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F7BF4B1BA9C95F00A75099 /* AppDelegate.swift */; };
- B5F7BF531BA9C95F00A75099 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B5F7BF521BA9C95F00A75099 /* Assets.xcassets */; };
E0CC9B4F972579066B42862A /* Pods_iCookTV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1068EAEDE861A2EEA0CF2228 /* Pods_iCookTV.framework */; };
+ E327714A24759E15002F06FE /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5F7BF4B1BA9C95F00A75099 /* AppDelegate.swift */; };
+ E327714B24759E15002F06FE /* BlurBackgroundPresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C79B151DBFBCF80069837A /* BlurBackgroundPresentable.swift */; };
+ E327714C24759E15002F06FE /* CategoriesCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52BD6761D5FA2570023D4E9 /* CategoriesCollection.swift */; };
+ E327714D24759E15002F06FE /* CategoriesDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = B594CB3A1D53998900CB5630 /* CategoriesDataSource.swift */; };
+ E327714E24759E15002F06FE /* CategoriesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53E397A1CA14B4200EB1EEE /* CategoriesViewController.swift */; };
+ E327714F24759E15002F06FE /* Category.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56D68E81CA564B00097D5D7 /* Category.swift */; };
+ E327715024759E15002F06FE /* CategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5A8F7081CA259120069F836 /* CategoryCell.swift */; };
+ E327715124759E15002F06FE /* CGRect+Grid.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52EC3B01CB26F1B0072762C /* CGRect+Grid.swift */; };
+ E327715224759E15002F06FE /* CoverBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = B58DE38A1CB8B54200C00266 /* CoverBuilder.swift */; };
+ E327715324759E15002F06FE /* DataCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52BD6741D5F94320023D4E9 /* DataCollection.swift */; };
+ E327715424759E15002F06FE /* DataFetching.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5EE174F1DC509B8009DA1AE /* DataFetching.swift */; };
+ E327715524759E15002F06FE /* DataRequest+Result.swift in Sources */ = {isa = PBXBuildFile; fileRef = B54605391DDB482A00208D37 /* DataRequest+Result.swift */; };
+ E327715624759E15002F06FE /* DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52BD6781D6024D30023D4E9 /* DataSource.swift */; };
+ E327715724759E15002F06FE /* Debug.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50BFC041CC88FA3004F853D /* Debug.swift */; };
+ E327715824759E15002F06FE /* DropdownMenuPresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B55BF7E81DC5C3C400EE20BD /* DropdownMenuPresentable.swift */; };
+ E327715924759E15002F06FE /* EmptyStateView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B543C3EC1CD1EF26008C512B /* EmptyStateView.swift */; };
+ E327715A24759E15002F06FE /* GroundControl.swift in Sources */ = {isa = PBXBuildFile; fileRef = B543C3EE1CD1FD0B008C512B /* GroundControl.swift */; };
+ E327715B24759E15002F06FE /* HistoryManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53115921CC69E7C00E75292 /* HistoryManager.swift */; };
+ E327715C24759E15002F06FE /* HistoryViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50BFC061CC8AF14004F853D /* HistoryViewController.swift */; };
+ E327715D24759E15002F06FE /* iCookTVKeys.swift in Sources */ = {isa = PBXBuildFile; fileRef = B51A95381CCF1C5100E5ED97 /* iCookTVKeys.swift */; };
+ E327715E24759E15002F06FE /* InsetLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = B586EFDA1CCA21B300EA8218 /* InsetLabel.swift */; };
+ E327715F24759E15002F06FE /* KeyPathDecoding.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53CD05422FEFF1C00492E27 /* KeyPathDecoding.swift */; };
+ E327716024759E15002F06FE /* LaunchViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B500D9AE1CBA3B7900622198 /* LaunchViewController.swift */; };
+ E327716124759E15002F06FE /* LoadingIndicatorPresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B50A202A1DC4B53C00ACBF1B /* LoadingIndicatorPresentable.swift */; };
+ E327716224759E15002F06FE /* MainMenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B500D99E1CB93D0600622198 /* MainMenuView.swift */; };
+ E327716324759E15002F06FE /* MenuButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = B500D9A01CB93D8100622198 /* MenuButton.swift */; };
+ E327716424759E15002F06FE /* MenuView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DA8EDD1CB3BD1B0068E0E3 /* MenuView.swift */; };
+ E327716524759E15002F06FE /* Metrics.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5AEEE311C82D4BC001CF112 /* Metrics.swift */; };
+ E327716624759E15002F06FE /* OverlayViewPresentable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B543C3E91CD1E85E008C512B /* OverlayViewPresentable.swift */; };
+ E327716724759E15002F06FE /* Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B55BF7E61DC5B7F400EE20BD /* Reusable.swift */; };
+ E327716824759E15002F06FE /* SectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C591141CA04BA50096B985 /* SectionHeaderView.swift */; };
+ E327716924759E15002F06FE /* SourceType.swift in Sources */ = {isa = PBXBuildFile; fileRef = B516E78A1D54D73B00A3FCB9 /* SourceType.swift */; };
+ E327716A24759E15002F06FE /* Trackable.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5501BE81CD8ACEC001C3281 /* Trackable.swift */; };
+ E327716B24759E15002F06FE /* TrackableNavigationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5501BE21CD74206001C3281 /* TrackableNavigationController.swift */; };
+ E327716C24759E15002F06FE /* Tracker.swift in Sources */ = {isa = PBXBuildFile; fileRef = B543C3F01CD21530008C512B /* Tracker.swift */; };
+ E327716D24759E15002F06FE /* UIColor+TV.swift in Sources */ = {isa = PBXBuildFile; fileRef = B53E39771CA1494000EB1EEE /* UIColor+TV.swift */; };
+ E327716E24759E15002F06FE /* UIFont+TV.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52EC3B21CB3A02E0072762C /* UIFont+TV.swift */; };
+ E327716F24759E15002F06FE /* UIImage+Grid.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5C85D031CA97981000AE0CF /* UIImage+Grid.swift */; };
+ E327717024759E15002F06FE /* UIViewController+Alert.swift in Sources */ = {isa = PBXBuildFile; fileRef = B56D0E251CBC0C1900B92F73 /* UIViewController+Alert.swift */; };
+ E327717124759E15002F06FE /* Video+PlayerItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = B543C3F21CD34419008C512B /* Video+PlayerItem.swift */; };
+ E327717224759E15002F06FE /* Video.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5BA618A1C7748B900548B38 /* Video.swift */; };
+ E327717324759E15002F06FE /* VideoCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5BA61881C77431400548B38 /* VideoCell.swift */; };
+ E327717424759E15002F06FE /* VideoPlayerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5BA618C1C774BC400548B38 /* VideoPlayerController.swift */; };
+ E327717524759E15002F06FE /* VideosCollection.swift in Sources */ = {isa = PBXBuildFile; fileRef = B52BD6721D5F910D0023D4E9 /* VideosCollection.swift */; };
+ E327717624759E15002F06FE /* VideosDataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = B58E906C1D5F806600AC184D /* VideosDataSource.swift */; };
+ E327717724759E15002F06FE /* VideosGridLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5EFE6C11DC600FF00236D1A /* VideosGridLayout.swift */; };
+ E327717824759E15002F06FE /* VideosViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5DCF9331C985E1600D19FC0 /* VideosViewController.swift */; };
+ E327717A24759E15002F06FE /* Pods_iCookTV.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1068EAEDE861A2EEA0CF2228 /* Pods_iCookTV.framework */; };
+ E327717D24759E15002F06FE /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = E3C764092454A82F009A151C /* GoogleService-Info.plist */; };
+ E327717E24759E15002F06FE /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = B5A614F91CCA05B4004A3CD5 /* InfoPlist.strings */; };
+ E327718024759E15002F06FE /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = B500D9A81CB94B5D00622198 /* Localizable.strings */; };
+ E38DFC012475B71100D78E92 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4F86E61A246A5C3C0019A283 /* LaunchScreen.storyboard */; };
+ E38DFC032475B7C800D78E92 /* DemoLaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = E38DFC022475B7C700D78E92 /* DemoLaunchScreen.storyboard */; };
+ E38DFC052475BA9200D78E92 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B5F7BF521BA9C95F00A75099 /* Assets.xcassets */; };
+ E38DFC062475BA9700D78E92 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B5F7BF521BA9C95F00A75099 /* Assets.xcassets */; };
E3C7640A2454A82F009A151C /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = E3C764092454A82F009A151C /* GoogleService-Info.plist */; };
/* End PBXBuildFile section */
@@ -153,7 +207,12 @@
B5F7BF591BA9C95F00A75099 /* iCookTV.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iCookTV.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
B5F7BF5F1BA9C95F00A75099 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
CCC5F61AC4253D5EB2FF6C5F /* Pods_iCookTV_iCookTVTests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_iCookTV_iCookTVTests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
+ E327718724759E15002F06FE /* iCookTV.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iCookTV.app; sourceTree = BUILT_PRODUCTS_DIR; };
+ E327718824759E16002F06FE /* Demo-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; name = "Demo-Info.plist"; path = "/Users/dlackty/src/iCook-tvOS/Demo-Info.plist"; sourceTree = ""; };
+ E38DFC022475B7C700D78E92 /* DemoLaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = DemoLaunchScreen.storyboard; sourceTree = ""; };
E3C764092454A82F009A151C /* GoogleService-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; };
+ E3D0FB672481174500191A31 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; };
+ E3D0FB682481174500191A31 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; };
F631C183B75D6A45DF934799 /* Pods-iCookTV-iCookTVTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iCookTV-iCookTVTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-iCookTV-iCookTVTests/Pods-iCookTV-iCookTVTests.release.xcconfig"; sourceTree = ""; };
/* End PBXFileReference section */
@@ -174,6 +233,14 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ E327717924759E15002F06FE /* Frameworks */ = {
+ isa = PBXFrameworksBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ E327717A24759E15002F06FE /* Pods_iCookTV.framework in Frameworks */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
@@ -229,6 +296,7 @@
B5A614FC1CCA0848004A3CD5 /* Supporting Files */ = {
isa = PBXGroup;
children = (
+ E327718824759E16002F06FE /* Demo-Info.plist */,
E3C764092454A82F009A151C /* GoogleService-Info.plist */,
B5F7BF541BA9C95F00A75099 /* Info.plist */,
B5A614F91CCA05B4004A3CD5 /* InfoPlist.strings */,
@@ -329,6 +397,7 @@
children = (
B5F7BF481BA9C95F00A75099 /* iCookTV.app */,
B5F7BF591BA9C95F00A75099 /* iCookTV.xctest */,
+ E327718724759E15002F06FE /* iCookTV.app */,
);
name = Products;
sourceTree = "";
@@ -340,6 +409,7 @@
B5A614FC1CCA0848004A3CD5 /* Supporting Files */,
B5F7BF521BA9C95F00A75099 /* Assets.xcassets */,
4F86E61A246A5C3C0019A283 /* LaunchScreen.storyboard */,
+ E38DFC022475B7C700D78E92 /* DemoLaunchScreen.storyboard */,
);
path = iCookTV;
sourceTree = "";
@@ -414,6 +484,28 @@
productReference = B5F7BF591BA9C95F00A75099 /* iCookTV.xctest */;
productType = "com.apple.product-type.bundle.unit-test";
};
+ E327714624759E15002F06FE /* iCookTV Demo */ = {
+ isa = PBXNativeTarget;
+ buildConfigurationList = E327718424759E15002F06FE /* Build configuration list for PBXNativeTarget "iCookTV Demo" */;
+ buildPhases = (
+ E327714724759E15002F06FE /* [CP] Check Pods Manifest.lock */,
+ E327714824759E15002F06FE /* Run Swiftlint */,
+ E327714924759E15002F06FE /* Sources */,
+ E327717924759E15002F06FE /* Frameworks */,
+ E327717B24759E15002F06FE /* Resources */,
+ E327718124759E15002F06FE /* Run Crashlytics Script */,
+ E327718224759E15002F06FE /* [CP] Embed Pods Frameworks */,
+ E327718324759E15002F06FE /* [CP] Copy Pods Resources */,
+ );
+ buildRules = (
+ );
+ dependencies = (
+ );
+ name = "iCookTV Demo";
+ productName = iCookTV;
+ productReference = E327718724759E15002F06FE /* iCookTV.app */;
+ productType = "com.apple.product-type.application";
+ };
/* End PBXNativeTarget section */
/* Begin PBXProject section */
@@ -434,6 +526,10 @@
LastSwiftMigration = 1030;
TestTargetID = B5F7BF471BA9C95F00A75099;
};
+ E327714624759E15002F06FE = {
+ DevelopmentTeam = U27B56TU48;
+ ProvisioningStyle = Manual;
+ };
};
};
buildConfigurationList = B5F7BF431BA9C95F00A75099 /* Build configuration list for PBXProject "iCookTV" */;
@@ -444,6 +540,7 @@
en,
Base,
"zh-Hant",
+ "zh-Hans",
);
mainGroup = B5F7BF3F1BA9C95F00A75099;
productRefGroup = B5F7BF491BA9C95F00A75099 /* Products */;
@@ -452,6 +549,7 @@
targets = (
B5F7BF471BA9C95F00A75099 /* iCookTV */,
B5F7BF581BA9C95F00A75099 /* iCookTVTests */,
+ E327714624759E15002F06FE /* iCookTV Demo */,
);
};
/* End PBXProject section */
@@ -461,11 +559,11 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
- B5F7BF531BA9C95F00A75099 /* Assets.xcassets in Resources */,
E3C7640A2454A82F009A151C /* GoogleService-Info.plist in Resources */,
B5A614F71CCA05B4004A3CD5 /* InfoPlist.strings in Resources */,
4F86E61B246A5C3C0019A283 /* LaunchScreen.storyboard in Resources */,
B500D9A61CB94B5D00622198 /* Localizable.strings in Resources */,
+ E38DFC062475BA9700D78E92 /* Assets.xcassets in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -478,6 +576,19 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ E327717B24759E15002F06FE /* Resources */ = {
+ isa = PBXResourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ E327717D24759E15002F06FE /* GoogleService-Info.plist in Resources */,
+ E327717E24759E15002F06FE /* InfoPlist.strings in Resources */,
+ E38DFC012475B71100D78E92 /* LaunchScreen.storyboard in Resources */,
+ E38DFC032475B7C800D78E92 /* DemoLaunchScreen.storyboard in Resources */,
+ E38DFC052475BA9200D78E92 /* Assets.xcassets in Resources */,
+ E327718024759E15002F06FE /* Localizable.strings in Resources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXResourcesBuildPhase section */
/* Begin PBXShellScriptBuildPhase section */
@@ -661,6 +772,110 @@
shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iCookTV-iCookTVTests/Pods-iCookTV-iCookTVTests-frameworks.sh\"\n";
showEnvVarsInLog = 0;
};
+ E327714724759E15002F06FE /* [CP] Check Pods Manifest.lock */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_PODFILE_DIR_PATH}/Podfile.lock",
+ "${PODS_ROOT}/Manifest.lock",
+ );
+ name = "[CP] Check Pods Manifest.lock";
+ outputPaths = (
+ "$(DERIVED_FILE_DIR)/Pods-iCookTV-checkManifestLockResult.txt",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
+ showEnvVarsInLog = 0;
+ };
+ E327714824759E15002F06FE /* Run Swiftlint */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Swiftlint";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "${PODS_ROOT}/SwiftLint/swiftlint --config ${SRCROOT}/.swiftlint.yml";
+ };
+ E327718124759E15002F06FE /* Run Crashlytics Script */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ );
+ name = "Run Crashlytics Script";
+ outputPaths = (
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "sh ${SRCROOT}/scripts/crashlytics.sh\n";
+ };
+ E327718224759E15002F06FE /* [CP] Embed Pods Frameworks */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-iCookTV/Pods-iCookTV-frameworks.sh",
+ "${BUILT_PRODUCTS_DIR}/Keys/Keys.framework",
+ "${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
+ "${PODS_ROOT}/ComScore/ComScore/dynamic/tvOS/ComScore.framework",
+ "${BUILT_PRODUCTS_DIR}/FBSDKCoreKit/FBSDKCoreKit.framework",
+ "${BUILT_PRODUCTS_DIR}/FBSDKLoginKit/FBSDKLoginKit.framework",
+ "${BUILT_PRODUCTS_DIR}/FBSDKShareKit/FBSDKShareKit.framework",
+ "${BUILT_PRODUCTS_DIR}/FBSDKTVOSKit/FBSDKTVOSKit.framework",
+ "${BUILT_PRODUCTS_DIR}/GoogleUtilities/GoogleUtilities.framework",
+ "${BUILT_PRODUCTS_DIR}/Hue/Hue.framework",
+ "${BUILT_PRODUCTS_DIR}/Kingfisher/Kingfisher.framework",
+ "${BUILT_PRODUCTS_DIR}/PromisesObjC/FBLPromises.framework",
+ "${BUILT_PRODUCTS_DIR}/nanopb/nanopb.framework",
+ );
+ name = "[CP] Embed Pods Frameworks";
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Keys.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/ComScore.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSDKCoreKit.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSDKLoginKit.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSDKShareKit.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBSDKTVOSKit.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/GoogleUtilities.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Hue.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Kingfisher.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FBLPromises.framework",
+ "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/nanopb.framework",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iCookTV/Pods-iCookTV-frameworks.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
+ E327718324759E15002F06FE /* [CP] Copy Pods Resources */ = {
+ isa = PBXShellScriptBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ );
+ inputPaths = (
+ "${PODS_ROOT}/Target Support Files/Pods-iCookTV/Pods-iCookTV-resources.sh",
+ "${PODS_CONFIGURATION_BUILD_DIR}/ComScore/SCORBundle.bundle",
+ );
+ name = "[CP] Copy Pods Resources";
+ outputPaths = (
+ "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SCORBundle.bundle",
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ shellPath = /bin/sh;
+ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-iCookTV/Pods-iCookTV-resources.sh\"\n";
+ showEnvVarsInLog = 0;
+ };
/* End PBXShellScriptBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
@@ -730,6 +945,60 @@
);
runOnlyForDeploymentPostprocessing = 0;
};
+ E327714924759E15002F06FE /* Sources */ = {
+ isa = PBXSourcesBuildPhase;
+ buildActionMask = 2147483647;
+ files = (
+ E327714A24759E15002F06FE /* AppDelegate.swift in Sources */,
+ E327714B24759E15002F06FE /* BlurBackgroundPresentable.swift in Sources */,
+ E327714C24759E15002F06FE /* CategoriesCollection.swift in Sources */,
+ E327714D24759E15002F06FE /* CategoriesDataSource.swift in Sources */,
+ E327714E24759E15002F06FE /* CategoriesViewController.swift in Sources */,
+ E327714F24759E15002F06FE /* Category.swift in Sources */,
+ E327715024759E15002F06FE /* CategoryCell.swift in Sources */,
+ E327715124759E15002F06FE /* CGRect+Grid.swift in Sources */,
+ E327715224759E15002F06FE /* CoverBuilder.swift in Sources */,
+ E327715324759E15002F06FE /* DataCollection.swift in Sources */,
+ E327715424759E15002F06FE /* DataFetching.swift in Sources */,
+ E327715524759E15002F06FE /* DataRequest+Result.swift in Sources */,
+ E327715624759E15002F06FE /* DataSource.swift in Sources */,
+ E327715724759E15002F06FE /* Debug.swift in Sources */,
+ E327715824759E15002F06FE /* DropdownMenuPresentable.swift in Sources */,
+ E327715924759E15002F06FE /* EmptyStateView.swift in Sources */,
+ E327715A24759E15002F06FE /* GroundControl.swift in Sources */,
+ E327715B24759E15002F06FE /* HistoryManager.swift in Sources */,
+ E327715C24759E15002F06FE /* HistoryViewController.swift in Sources */,
+ E327715D24759E15002F06FE /* iCookTVKeys.swift in Sources */,
+ E327715E24759E15002F06FE /* InsetLabel.swift in Sources */,
+ E327715F24759E15002F06FE /* KeyPathDecoding.swift in Sources */,
+ E327716024759E15002F06FE /* LaunchViewController.swift in Sources */,
+ E327716124759E15002F06FE /* LoadingIndicatorPresentable.swift in Sources */,
+ E327716224759E15002F06FE /* MainMenuView.swift in Sources */,
+ E327716324759E15002F06FE /* MenuButton.swift in Sources */,
+ E327716424759E15002F06FE /* MenuView.swift in Sources */,
+ E327716524759E15002F06FE /* Metrics.swift in Sources */,
+ E327716624759E15002F06FE /* OverlayViewPresentable.swift in Sources */,
+ E327716724759E15002F06FE /* Reusable.swift in Sources */,
+ E327716824759E15002F06FE /* SectionHeaderView.swift in Sources */,
+ E327716924759E15002F06FE /* SourceType.swift in Sources */,
+ E327716A24759E15002F06FE /* Trackable.swift in Sources */,
+ E327716B24759E15002F06FE /* TrackableNavigationController.swift in Sources */,
+ E327716C24759E15002F06FE /* Tracker.swift in Sources */,
+ E327716D24759E15002F06FE /* UIColor+TV.swift in Sources */,
+ E327716E24759E15002F06FE /* UIFont+TV.swift in Sources */,
+ E327716F24759E15002F06FE /* UIImage+Grid.swift in Sources */,
+ E327717024759E15002F06FE /* UIViewController+Alert.swift in Sources */,
+ E327717124759E15002F06FE /* Video+PlayerItem.swift in Sources */,
+ E327717224759E15002F06FE /* Video.swift in Sources */,
+ E327717324759E15002F06FE /* VideoCell.swift in Sources */,
+ E327717424759E15002F06FE /* VideoPlayerController.swift in Sources */,
+ E327717524759E15002F06FE /* VideosCollection.swift in Sources */,
+ E327717624759E15002F06FE /* VideosDataSource.swift in Sources */,
+ E327717724759E15002F06FE /* VideosGridLayout.swift in Sources */,
+ E327717824759E15002F06FE /* VideosViewController.swift in Sources */,
+ );
+ runOnlyForDeploymentPostprocessing = 0;
+ };
/* End PBXSourcesBuildPhase section */
/* Begin PBXTargetDependency section */
@@ -747,6 +1016,7 @@
B500D9A91CB94B6600622198 /* Base */,
B500D9A71CB94B5D00622198 /* en */,
B500D9AA1CB94BA400622198 /* zh-Hant */,
+ E3D0FB682481174500191A31 /* zh-Hans */,
);
name = Localizable.strings;
sourceTree = "";
@@ -757,6 +1027,7 @@
B5A614F81CCA05B4004A3CD5 /* Base */,
B5A614FA1CCA05B6004A3CD5 /* en */,
B5A614FB1CCA05B7004A3CD5 /* zh-Hant */,
+ E3D0FB672481174500191A31 /* zh-Hans */,
);
name = InfoPlist.strings;
sourceTree = "";
@@ -866,7 +1137,7 @@
GCC_WARN_UNUSED_FUNCTION = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
MTL_ENABLE_DEBUG_INFO = NO;
- OTHER_SWIFT_FLAGS = "-D TRACKING";
+ OTHER_SWIFT_FLAGS = "";
SDKROOT = appletvos;
SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
SWIFT_VERSION = 5.0;
@@ -885,11 +1156,11 @@
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
- CURRENT_PROJECT_VERSION = develop;
+ CURRENT_PROJECT_VERSION = 102;
DEVELOPMENT_TEAM = U27B56TU48;
INFOPLIST_FILE = iCookTV/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- MARKETING_VERSION = 1.1.0;
+ MARKETING_VERSION = 1.1.1;
PRODUCT_BUNDLE_IDENTIFIER = com.thepolydice.icook;
PRODUCT_NAME = iCookTV;
PROVISIONING_PROFILE_SPECIFIER = "match AppStore com.thepolydice.icook tvos";
@@ -905,11 +1176,12 @@
ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
CODE_SIGN_IDENTITY = "iPhone Distribution";
CODE_SIGN_STYLE = Manual;
- CURRENT_PROJECT_VERSION = develop;
+ CURRENT_PROJECT_VERSION = 102;
DEVELOPMENT_TEAM = U27B56TU48;
INFOPLIST_FILE = iCookTV/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
- MARKETING_VERSION = 1.1.0;
+ MARKETING_VERSION = 1.1.1;
+ OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D TRACKING";
PRODUCT_BUNDLE_IDENTIFIER = com.thepolydice.icook;
PRODUCT_NAME = iCookTV;
PROVISIONING_PROFILE_SPECIFIER = "match AppStore com.thepolydice.icook tvos";
@@ -948,6 +1220,49 @@
};
name = Release;
};
+ E327718524759E15002F06FE /* Debug */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 3DD923198D3B9EC316862C17 /* Pods-iCookTV.debug.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
+ ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = DemoLaunchImage;
+ CODE_SIGN_IDENTITY = "iPhone Distribution";
+ CODE_SIGN_STYLE = Manual;
+ CURRENT_PROJECT_VERSION = 102;
+ DEVELOPMENT_TEAM = U27B56TU48;
+ INFOPLIST_FILE = "Demo-Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ MARKETING_VERSION = 1.1.1;
+ OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEMO";
+ PRODUCT_BUNDLE_IDENTIFIER = com.thepolydice.icook.retaildemo;
+ PRODUCT_NAME = iCookTV;
+ PROVISIONING_PROFILE_SPECIFIER = "match AppStore com.thepolydice.icook.retaildemo tvos";
+ };
+ name = Debug;
+ };
+ E327718624759E15002F06FE /* Release */ = {
+ isa = XCBuildConfiguration;
+ baseConfigurationReference = 119537385ADCF0545C748A21 /* Pods-iCookTV.release.xcconfig */;
+ buildSettings = {
+ ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = "$(inherited)";
+ ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
+ ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = DemoLaunchImage;
+ CODE_SIGN_IDENTITY = "iPhone Distribution";
+ CODE_SIGN_STYLE = Manual;
+ CURRENT_PROJECT_VERSION = 102;
+ DEVELOPMENT_TEAM = U27B56TU48;
+ INFOPLIST_FILE = "Demo-Info.plist";
+ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+ MARKETING_VERSION = 1.1.1;
+ OTHER_SWIFT_FLAGS = "$(inherited) -D COCOAPODS -D DEMO";
+ PRODUCT_BUNDLE_IDENTIFIER = com.thepolydice.icook.retaildemo;
+ PRODUCT_NAME = iCookTV;
+ PROVISIONING_PROFILE_SPECIFIER = "match AppStore com.thepolydice.icook.retaildemo tvos";
+ SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
+ };
+ name = Release;
+ };
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
@@ -978,6 +1293,15 @@
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
+ E327718424759E15002F06FE /* Build configuration list for PBXNativeTarget "iCookTV Demo" */ = {
+ isa = XCConfigurationList;
+ buildConfigurations = (
+ E327718524759E15002F06FE /* Debug */,
+ E327718624759E15002F06FE /* Release */,
+ );
+ defaultConfigurationIsVisible = 0;
+ defaultConfigurationName = Release;
+ };
/* End XCConfigurationList section */
};
rootObject = B5F7BF401BA9C95F00A75099 /* Project object */;
diff --git a/iCookTV.xcodeproj/xcshareddata/xcschemes/iCookTV Demo.xcscheme b/iCookTV.xcodeproj/xcshareddata/xcschemes/iCookTV Demo.xcscheme
new file mode 100644
index 0000000..d239585
--- /dev/null
+++ b/iCookTV.xcodeproj/xcshareddata/xcschemes/iCookTV Demo.xcscheme
@@ -0,0 +1,78 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iCookTV/AppDelegate.swift b/iCookTV/AppDelegate.swift
index 4f9481d..c646fb8 100644
--- a/iCookTV/AppDelegate.swift
+++ b/iCookTV/AppDelegate.swift
@@ -46,6 +46,14 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
return true
}
+ func applicationWillResignActive(_ application: UIApplication) {
+ #if DEMO
+ // Do not store any histroy for demo version
+ HistoryManager.deleteCache()
+ exit(1)
+ #endif
+ }
+
// MARK: - Private Methods
private func endBackgroundTask(inApplication application: UIApplication) {
diff --git a/iCookTV/Assets.xcassets/DemoLaunchScreenImage.imageset/Contents.json b/iCookTV/Assets.xcassets/DemoLaunchScreenImage.imageset/Contents.json
new file mode 100644
index 0000000..d4f2fd8
--- /dev/null
+++ b/iCookTV/Assets.xcassets/DemoLaunchScreenImage.imageset/Contents.json
@@ -0,0 +1,21 @@
+{
+ "images" : [
+ {
+ "filename" : "LaunchScreen3_Demo.png",
+ "idiom" : "tv",
+ "scale" : "1x"
+ },
+ {
+ "filename" : "LaunchScreen3_Demo@2x.png",
+ "idiom" : "tv",
+ "scale" : "2x"
+ }
+ ],
+ "info" : {
+ "author" : "xcode",
+ "version" : 1
+ },
+ "properties" : {
+ "localizable" : true
+ }
+}
diff --git a/iCookTV/Assets.xcassets/DemoLaunchScreenImage.imageset/LaunchScreen3_Demo.png b/iCookTV/Assets.xcassets/DemoLaunchScreenImage.imageset/LaunchScreen3_Demo.png
new file mode 100644
index 0000000..44727b2
Binary files /dev/null and b/iCookTV/Assets.xcassets/DemoLaunchScreenImage.imageset/LaunchScreen3_Demo.png differ
diff --git a/iCookTV/Assets.xcassets/DemoLaunchScreenImage.imageset/LaunchScreen3_Demo@2x.png b/iCookTV/Assets.xcassets/DemoLaunchScreenImage.imageset/LaunchScreen3_Demo@2x.png
new file mode 100644
index 0000000..a7e3aa5
Binary files /dev/null and b/iCookTV/Assets.xcassets/DemoLaunchScreenImage.imageset/LaunchScreen3_Demo@2x.png differ
diff --git a/iCookTV/Assets.xcassets/LaunchScreenImage.imageset/Contents.json b/iCookTV/Assets.xcassets/LaunchScreenImage.imageset/Contents.json
index 432e689..04eaca3 100644
--- a/iCookTV/Assets.xcassets/LaunchScreenImage.imageset/Contents.json
+++ b/iCookTV/Assets.xcassets/LaunchScreenImage.imageset/Contents.json
@@ -1,21 +1,21 @@
{
"images" : [
{
- "idiom" : "tv",
"filename" : "LaunchScreen3.png",
+ "idiom" : "tv",
"scale" : "1x"
},
{
- "idiom" : "tv",
"filename" : "LaunchScreen3@2x.png",
+ "idiom" : "tv",
"scale" : "2x"
}
],
"info" : {
- "version" : 1,
- "author" : "xcode"
+ "author" : "xcode",
+ "version" : 1
},
"properties" : {
"localizable" : true
}
-}
\ No newline at end of file
+}
diff --git a/iCookTV/Controllers/LaunchViewController.swift b/iCookTV/Controllers/LaunchViewController.swift
index 685d8b5..c0d2857 100644
--- a/iCookTV/Controllers/LaunchViewController.swift
+++ b/iCookTV/Controllers/LaunchViewController.swift
@@ -31,7 +31,11 @@ class LaunchViewController: UIViewController, DataFetching {
private lazy var launchImageView: UIImageView = {
let _imageView = UIImageView()
- _imageView.image = UIImage(named: "launchImage")
+ #if DEMO
+ _imageView.image = UIImage(named: "DemoLaunchScreenImage")
+ #else
+ _imageView.image = UIImage(named: "LaunchScreenImage")
+ #endif
_imageView.contentMode = .scaleAspectFill
return _imageView
}()
@@ -122,6 +126,10 @@ class LaunchViewController: UIViewController, DataFetching {
self.view.layoutIfNeeded()
}
}, completion: { _ in
+ #if DEMO
+ Thread.sleep(forTimeInterval: 2)
+ #endif
+
self.semaphore.signal()
self.isAnimating = false
})
diff --git a/iCookTV/DemoLaunchScreen.storyboard b/iCookTV/DemoLaunchScreen.storyboard
new file mode 100644
index 0000000..fac64be
--- /dev/null
+++ b/iCookTV/DemoLaunchScreen.storyboard
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/iCookTV/LaunchScreen.storyboard b/iCookTV/LaunchScreen.storyboard
index 9915166..3f2d0b8 100644
--- a/iCookTV/LaunchScreen.storyboard
+++ b/iCookTV/LaunchScreen.storyboard
@@ -1,34 +1,34 @@
-
+
-
+
-
+
-
+
-
-
+
+
-
+
-
+
-
+
-
+
diff --git a/iCookTV/zh-Hans.lproj/InfoPlist.strings b/iCookTV/zh-Hans.lproj/InfoPlist.strings
new file mode 100644
index 0000000..c035b80
--- /dev/null
+++ b/iCookTV/zh-Hans.lproj/InfoPlist.strings
@@ -0,0 +1,3 @@
+/* Localized versions of Info.plist keys */
+
+"CFBundleDisplayName" = "爱料理";
diff --git a/iCookTV/zh-Hans.lproj/Localizable.strings b/iCookTV/zh-Hans.lproj/Localizable.strings
new file mode 100644
index 0000000..bb1af3e
--- /dev/null
+++ b/iCookTV/zh-Hans.lproj/Localizable.strings
@@ -0,0 +1,31 @@
+/*
+ Localizable.strings
+ iCookTV
+
+ Created by Ben on 09/04/2016.
+ Copyright © 2016 Polydice, Inc. All rights reserved.
+*/
+
+"icook-tv" = "爱料理 TV";
+
+"history" = "浏览纪录";
+
+"home" = "首页";
+
+"retry" = "再试一次";
+
+"ok" = "OK";
+
+"launch-screen-upper-tagline" = "爱料理食谱社群";
+
+"launch-screen-lower-tagline" = "icook.tw";
+
+"no-history-found" = "先看些视频吧!";
+
+"no-video-found" = "目前没有视频";
+
+"error-title" = "发生错误\n";
+
+"video-error" = "视频目前无法播放,请稍候再试";
+
+"contact-info" = "如果问题持续发生,请来信 hi@icook.tw 告诉我们,谢谢";