유희정

기본 설정

Showing 67 changed files with 2985 additions and 0 deletions
1 +
2 +[android]
3 + target = Google Inc.:Google APIs:23
4 +
5 +[maven_repositories]
6 + central = https://repo1.maven.org/maven2
1 +module.exports = {
2 + root: true,
3 + extends: '@react-native-community',
4 +};
1 +[ignore]
2 +; We fork some components by platform
3 +.*/*[.]android.js
4 +
5 +; Ignore "BUCK" generated dirs
6 +<PROJECT_ROOT>/\.buckd/
7 +
8 +; Ignore polyfills
9 +node_modules/react-native/Libraries/polyfills/.*
10 +
11 +; These should not be required directly
12 +; require from fbjs/lib instead: require('fbjs/lib/warning')
13 +node_modules/warning/.*
14 +
15 +; Flow doesn't support platforms
16 +.*/Libraries/Utilities/LoadingView.js
17 +
18 +[untyped]
19 +.*/node_modules/@react-native-community/cli/.*/.*
20 +
21 +[include]
22 +
23 +[libs]
24 +node_modules/react-native/Libraries/react-native/react-native-interface.js
25 +node_modules/react-native/flow/
26 +
27 +[options]
28 +emoji=true
29 +
30 +esproposal.optional_chaining=enable
31 +esproposal.nullish_coalescing=enable
32 +
33 +module.file_ext=.js
34 +module.file_ext=.json
35 +module.file_ext=.ios.js
36 +
37 +munge_underscores=true
38 +
39 +module.name_mapper='^react-native$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/react-native/react-native-implementation'
40 +module.name_mapper='^react-native/\(.*\)$' -> '<PROJECT_ROOT>/node_modules/react-native/\1'
41 +module.name_mapper='^[./a-zA-Z0-9$_-]+\.\(bmp\|gif\|jpg\|jpeg\|png\|psd\|svg\|webp\|m4v\|mov\|mp4\|mpeg\|mpg\|webm\|aac\|aiff\|caf\|m4a\|mp3\|wav\|html\|pdf\)$' -> '<PROJECT_ROOT>/node_modules/react-native/Libraries/Image/RelativeImageStub'
42 +
43 +suppress_type=$FlowIssue
44 +suppress_type=$FlowFixMe
45 +suppress_type=$FlowFixMeProps
46 +suppress_type=$FlowFixMeState
47 +
48 +suppress_comment=\\(.\\|\n\\)*\\$FlowFixMe\\($\\|[^(]\\|(\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)
49 +suppress_comment=\\(.\\|\n\\)*\\$FlowIssue\\((\\(<VERSION>\\)? *\\(site=[a-z,_]*react_native\\(_ios\\)?_\\(oss\\|fb\\)[a-z,_]*\\)?)\\)?:? #[0-9]+
50 +suppress_comment=\\(.\\|\n\\)*\\$FlowExpectedError
51 +
52 +[lints]
53 +sketchy-null-number=warn
54 +sketchy-null-mixed=warn
55 +sketchy-number=warn
56 +untyped-type-import=warn
57 +nonstrict-import=warn
58 +deprecated-type=warn
59 +unsafe-getters-setters=warn
60 +inexact-spread=warn
61 +unnecessary-invariant=warn
62 +signature-verification-failure=warn
63 +deprecated-utility=error
64 +
65 +[strict]
66 +deprecated-type
67 +nonstrict-import
68 +sketchy-null
69 +unclear-type
70 +unsafe-getters-setters
71 +untyped-import
72 +untyped-type-import
73 +
74 +[version]
75 +^0.105.0
1 +*.pbxproj -text
1 +# OSX
2 +#
3 +.DS_Store
4 +
5 +# Xcode
6 +#
7 +build/
8 +*.pbxuser
9 +!default.pbxuser
10 +*.mode1v3
11 +!default.mode1v3
12 +*.mode2v3
13 +!default.mode2v3
14 +*.perspectivev3
15 +!default.perspectivev3
16 +xcuserdata
17 +*.xccheckout
18 +*.moved-aside
19 +DerivedData
20 +*.hmap
21 +*.ipa
22 +*.xcuserstate
23 +
24 +# Android/IntelliJ
25 +#
26 +build/
27 +.idea
28 +.gradle
29 +local.properties
30 +*.iml
31 +
32 +# node.js
33 +#
34 +node_modules/
35 +npm-debug.log
36 +yarn-error.log
37 +
38 +# BUCK
39 +buck-out/
40 +\.buckd/
41 +*.keystore
42 +!debug.keystore
43 +
44 +# fastlane
45 +#
46 +# It is recommended to not store the screenshots in the git repo. Instead, use fastlane to re-generate the
47 +# screenshots whenever they are needed.
48 +# For more information about the recommended setup visit:
49 +# https://docs.fastlane.tools/best-practices/source-control/
50 +
51 +*/fastlane/report.xml
52 +*/fastlane/Preview.html
53 +*/fastlane/screenshots
54 +
55 +# Bundle artifact
56 +*.jsbundle
57 +
58 +# CocoaPods
59 +/ios/Pods/
1 +module.exports = {
2 + bracketSpacing: false,
3 + jsxBracketSameLine: true,
4 + singleQuote: true,
5 + trailingComma: 'all',
6 +};
1 +{}
...\ No newline at end of file ...\ No newline at end of file
1 +import React, {Component} from 'react'
2 +import { createAppContainer } from 'react-navigation';
3 +import { createStackNavigator } from 'react-navigation-stack';
4 +import Login from './source/Login';
5 +import MainScreen from './source/MainScreen';
6 +
7 +const MainNavigator = createStackNavigator({
8 + Login : {screen: Login},
9 + MainScreen : {screen:MainScreen},
10 +},
11 + {initialRouteName: 'Login',headerMode:'none'}
12 +);
13 +
14 +const App = createAppContainer(MainNavigator);
15 +
16 +export default App;
...\ No newline at end of file ...\ No newline at end of file
1 +/**
2 + * @format
3 + */
4 +
5 +import 'react-native';
6 +import React from 'react';
7 +import App from '../App';
8 +
9 +// Note: test renderer must be required after react-native.
10 +import renderer from 'react-test-renderer';
11 +
12 +it('renders correctly', () => {
13 + renderer.create(<App />);
14 +});
1 +# To learn about Buck see [Docs](https://buckbuild.com/).
2 +# To run your application with Buck:
3 +# - install Buck
4 +# - `npm start` - to start the packager
5 +# - `cd android`
6 +# - `keytool -genkey -v -keystore keystores/debug.keystore -storepass android -alias androiddebugkey -keypass android -dname "CN=Android Debug,O=Android,C=US"`
7 +# - `./gradlew :app:copyDownloadableDepsToLibs` - make all Gradle compile dependencies available to Buck
8 +# - `buck install -r android/app` - compile, install and run application
9 +#
10 +
11 +load(":build_defs.bzl", "create_aar_targets", "create_jar_targets")
12 +
13 +lib_deps = []
14 +
15 +create_aar_targets(glob(["libs/*.aar"]))
16 +
17 +create_jar_targets(glob(["libs/*.jar"]))
18 +
19 +android_library(
20 + name = "all-libs",
21 + exported_deps = lib_deps,
22 +)
23 +
24 +android_library(
25 + name = "app-code",
26 + srcs = glob([
27 + "src/main/java/**/*.java",
28 + ]),
29 + deps = [
30 + ":all-libs",
31 + ":build_config",
32 + ":res",
33 + ],
34 +)
35 +
36 +android_build_config(
37 + name = "build_config",
38 + package = "com.fwiot",
39 +)
40 +
41 +android_resource(
42 + name = "res",
43 + package = "com.fwiot",
44 + res = "src/main/res",
45 +)
46 +
47 +android_binary(
48 + name = "app",
49 + keystore = "//android/keystores:debug",
50 + manifest = "src/main/AndroidManifest.xml",
51 + package_type = "debug",
52 + deps = [
53 + ":app-code",
54 + ],
55 +)
1 +apply plugin: "com.android.application"
2 +
3 +import com.android.build.OutputFile
4 +
5 +/**
6 + * The react.gradle file registers a task for each build variant (e.g. bundleDebugJsAndAssets
7 + * and bundleReleaseJsAndAssets).
8 + * These basically call `react-native bundle` with the correct arguments during the Android build
9 + * cycle. By default, bundleDebugJsAndAssets is skipped, as in debug/dev mode we prefer to load the
10 + * bundle directly from the development server. Below you can see all the possible configurations
11 + * and their defaults. If you decide to add a configuration block, make sure to add it before the
12 + * `apply from: "../../node_modules/react-native/react.gradle"` line.
13 + *
14 + * project.ext.react = [
15 + * // the name of the generated asset file containing your JS bundle
16 + * bundleAssetName: "index.android.bundle",
17 + *
18 + * // the entry file for bundle generation
19 + * entryFile: "index.android.js",
20 + *
21 + * // https://facebook.github.io/react-native/docs/performance#enable-the-ram-format
22 + * bundleCommand: "ram-bundle",
23 + *
24 + * // whether to bundle JS and assets in debug mode
25 + * bundleInDebug: false,
26 + *
27 + * // whether to bundle JS and assets in release mode
28 + * bundleInRelease: true,
29 + *
30 + * // whether to bundle JS and assets in another build variant (if configured).
31 + * // See http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Build-Variants
32 + * // The configuration property can be in the following formats
33 + * // 'bundleIn${productFlavor}${buildType}'
34 + * // 'bundleIn${buildType}'
35 + * // bundleInFreeDebug: true,
36 + * // bundleInPaidRelease: true,
37 + * // bundleInBeta: true,
38 + *
39 + * // whether to disable dev mode in custom build variants (by default only disabled in release)
40 + * // for example: to disable dev mode in the staging build type (if configured)
41 + * devDisabledInStaging: true,
42 + * // The configuration property can be in the following formats
43 + * // 'devDisabledIn${productFlavor}${buildType}'
44 + * // 'devDisabledIn${buildType}'
45 + *
46 + * // the root of your project, i.e. where "package.json" lives
47 + * root: "../../",
48 + *
49 + * // where to put the JS bundle asset in debug mode
50 + * jsBundleDirDebug: "$buildDir/intermediates/assets/debug",
51 + *
52 + * // where to put the JS bundle asset in release mode
53 + * jsBundleDirRelease: "$buildDir/intermediates/assets/release",
54 + *
55 + * // where to put drawable resources / React Native assets, e.g. the ones you use via
56 + * // require('./image.png')), in debug mode
57 + * resourcesDirDebug: "$buildDir/intermediates/res/merged/debug",
58 + *
59 + * // where to put drawable resources / React Native assets, e.g. the ones you use via
60 + * // require('./image.png')), in release mode
61 + * resourcesDirRelease: "$buildDir/intermediates/res/merged/release",
62 + *
63 + * // by default the gradle tasks are skipped if none of the JS files or assets change; this means
64 + * // that we don't look at files in android/ or ios/ to determine whether the tasks are up to
65 + * // date; if you have any other folders that you want to ignore for performance reasons (gradle
66 + * // indexes the entire tree), add them here. Alternatively, if you have JS files in android/
67 + * // for example, you might want to remove it from here.
68 + * inputExcludes: ["android/**", "ios/**"],
69 + *
70 + * // override which node gets called and with what additional arguments
71 + * nodeExecutableAndArgs: ["node"],
72 + *
73 + * // supply additional arguments to the packager
74 + * extraPackagerArgs: []
75 + * ]
76 + */
77 +
78 +project.ext.react = [
79 + entryFile: "index.js",
80 + enableHermes: false, // clean and rebuild if changing
81 +]
82 +
83 +apply from: "../../node_modules/react-native/react.gradle"
84 +
85 +/**
86 + * Set this to true to create two separate APKs instead of one:
87 + * - An APK that only works on ARM devices
88 + * - An APK that only works on x86 devices
89 + * The advantage is the size of the APK is reduced by about 4MB.
90 + * Upload all the APKs to the Play Store and people will download
91 + * the correct one based on the CPU architecture of their device.
92 + */
93 +def enableSeparateBuildPerCPUArchitecture = false
94 +
95 +/**
96 + * Run Proguard to shrink the Java bytecode in release builds.
97 + */
98 +def enableProguardInReleaseBuilds = false
99 +
100 +/**
101 + * The preferred build flavor of JavaScriptCore.
102 + *
103 + * For example, to use the international variant, you can use:
104 + * `def jscFlavor = 'org.webkit:android-jsc-intl:+'`
105 + *
106 + * The international variant includes ICU i18n library and necessary data
107 + * allowing to use e.g. `Date.toLocaleString` and `String.localeCompare` that
108 + * give correct results when using with locales other than en-US. Note that
109 + * this variant is about 6MiB larger per architecture than default.
110 + */
111 +def jscFlavor = 'org.webkit:android-jsc:+'
112 +
113 +/**
114 + * Whether to enable the Hermes VM.
115 + *
116 + * This should be set on project.ext.react and mirrored here. If it is not set
117 + * on project.ext.react, JavaScript will not be compiled to Hermes Bytecode
118 + * and the benefits of using Hermes will therefore be sharply reduced.
119 + */
120 +def enableHermes = project.ext.react.get("enableHermes", false);
121 +
122 +android {
123 + compileSdkVersion rootProject.ext.compileSdkVersion
124 +
125 + compileOptions {
126 + sourceCompatibility JavaVersion.VERSION_1_8
127 + targetCompatibility JavaVersion.VERSION_1_8
128 + }
129 +
130 + defaultConfig {
131 + applicationId "com.fwiot"
132 + minSdkVersion rootProject.ext.minSdkVersion
133 + targetSdkVersion rootProject.ext.targetSdkVersion
134 + versionCode 1
135 + versionName "1.0"
136 + }
137 + splits {
138 + abi {
139 + reset()
140 + enable enableSeparateBuildPerCPUArchitecture
141 + universalApk false // If true, also generate a universal APK
142 + include "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
143 + }
144 + }
145 + signingConfigs {
146 + debug {
147 + storeFile file('debug.keystore')
148 + storePassword 'android'
149 + keyAlias 'androiddebugkey'
150 + keyPassword 'android'
151 + }
152 + }
153 + buildTypes {
154 + debug {
155 + signingConfig signingConfigs.debug
156 + }
157 + release {
158 + // Caution! In production, you need to generate your own keystore file.
159 + // see https://facebook.github.io/react-native/docs/signed-apk-android.
160 + signingConfig signingConfigs.debug
161 + minifyEnabled enableProguardInReleaseBuilds
162 + proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
163 + }
164 + }
165 + // applicationVariants are e.g. debug, release
166 + applicationVariants.all { variant ->
167 + variant.outputs.each { output ->
168 + // For each separate APK per architecture, set a unique version code as described here:
169 + // https://developer.android.com/studio/build/configure-apk-splits.html
170 + def versionCodes = ["armeabi-v7a": 1, "x86": 2, "arm64-v8a": 3, "x86_64": 4]
171 + def abi = output.getFilter(OutputFile.ABI)
172 + if (abi != null) { // null for the universal-debug, universal-release variants
173 + output.versionCodeOverride =
174 + versionCodes.get(abi) * 1048576 + defaultConfig.versionCode
175 + }
176 +
177 + }
178 + }
179 +}
180 +
181 +dependencies {
182 + implementation fileTree(dir: "libs", include: ["*.jar"])
183 + implementation "com.facebook.react:react-native:+" // From node_modules
184 +
185 + if (enableHermes) {
186 + def hermesPath = "../../node_modules/hermes-engine/android/";
187 + debugImplementation files(hermesPath + "hermes-debug.aar")
188 + releaseImplementation files(hermesPath + "hermes-release.aar")
189 + } else {
190 + implementation jscFlavor
191 + }
192 +
193 + compile project(':react-native-push-notification')
194 + compile ('com.google.android.gms:play-services-gcm:8.1.0') {
195 + force = true;
196 + }
197 +}
198 +
199 +// Run this once to be able to run the application with BUCK
200 +// puts all compile dependencies into folder libs for BUCK to use
201 +task copyDownloadableDepsToLibs(type: Copy) {
202 + from configurations.compile
203 + into 'libs'
204 +}
205 +
206 +apply from: file("../../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesAppBuildGradle(project)
1 +"""Helper definitions to glob .aar and .jar targets"""
2 +
3 +def create_aar_targets(aarfiles):
4 + for aarfile in aarfiles:
5 + name = "aars__" + aarfile[aarfile.rindex("/") + 1:aarfile.rindex(".aar")]
6 + lib_deps.append(":" + name)
7 + android_prebuilt_aar(
8 + name = name,
9 + aar = aarfile,
10 + )
11 +
12 +def create_jar_targets(jarfiles):
13 + for jarfile in jarfiles:
14 + name = "jars__" + jarfile[jarfile.rindex("/") + 1:jarfile.rindex(".jar")]
15 + lib_deps.append(":" + name)
16 + prebuilt_jar(
17 + name = name,
18 + binary_jar = jarfile,
19 + )
No preview for this file type
1 +# Add project specific ProGuard rules here.
2 +# By default, the flags in this file are appended to flags specified
3 +# in /usr/local/Cellar/android-sdk/24.3.3/tools/proguard/proguard-android.txt
4 +# You can edit the include path and order by changing the proguardFiles
5 +# directive in build.gradle.
6 +#
7 +# For more details, see
8 +# http://developer.android.com/guide/developing/tools/proguard.html
9 +
10 +# Add any project specific keep options here:
1 +<?xml version="1.0" encoding="utf-8"?>
2 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3 + xmlns:tools="http://schemas.android.com/tools">
4 +
5 + <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
6 +
7 + <application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning" />
8 +</manifest>
1 +<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2 + package="com.fwiot">
3 +
4 + <uses-permission android:name="android.permission.INTERNET" />
5 + <uses-permission android:name="android.permission.WAKE_LOCK" />
6 + <permission
7 + android:name="${applicationId}.permission.C2D_MESSAGE"
8 + android:protectionLevel="signature" />
9 + <uses-permission android:name="${applicationId}.permission.C2D_MESSAGE" />
10 + <uses-permission android:name="android.permission.VIBRATE" />
11 + <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
12 +
13 + <application
14 + android:name=".MainApplication"
15 + android:label="@string/app_name"
16 + android:icon="@mipmap/ic_launcher"
17 + android:roundIcon="@mipmap/ic_launcher_round"
18 + android:allowBackup="false"
19 + android:theme="@style/AppTheme">
20 +
21 + <receiver
22 + android:name="com.google.android.gms.gcm.GcmReceiver"
23 + android:exported="true"
24 + android:permission="com.google.android.c2dm.permission.SEND" >
25 + <intent-filter>
26 + <action android:name="com.google.android.c2dm.intent.RECEIVE" />
27 + <category android:name="${applicationId}" />
28 + </intent-filter>
29 + </receiver>
30 +
31 + <receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationPublisher" />
32 + <receiver android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationBootEventReceiver">
33 + <intent-filter>
34 + <action android:name="android.intent.action.BOOT_COMPLETED" />
35 + </intent-filter>
36 + </receiver>
37 + <service android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationRegistrationService"/>
38 + <service
39 + android:name="com.dieam.reactnativepushnotification.modules.RNPushNotificationListenerService"
40 + android:exported="false" >
41 + <intent-filter>
42 + <action android:name="com.google.android.c2dm.intent.RECEIVE" />
43 + </intent-filter>
44 + </service>
45 +
46 + <activity
47 + android:name=".MainActivity"
48 + android:label="@string/app_name"
49 + android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
50 + android:windowSoftInputMode="adjustResize">
51 + <intent-filter>
52 + <action android:name="android.intent.action.MAIN" />
53 + <category android:name="android.intent.category.LAUNCHER" />
54 + </intent-filter>
55 + </activity>
56 + <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
57 +
58 + </application>
59 +
60 +
61 +
62 +</manifest>
1 +package com.fwiot;
2 +
3 +import com.facebook.react.ReactActivity;
4 +import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage;
5 +
6 +public class MainActivity extends ReactActivity implements ReactApplication {
7 +
8 + private final ReactNativeHost mReactNativeHost = new ReactNativeHost(this) {
9 + @Override
10 + protected boolean getUseDeveloperSupport() {
11 + return BuildConfig.DEBUG;
12 + }
13 +
14 + @Override
15 + protected List<ReactPackage> getPackages() {
16 +
17 + return Arrays.<ReactPackage>asList(
18 + new MainReactPackage(),
19 + new ReactNativePushNotificationPackage() // <---- Add the Package
20 + );
21 + }
22 + };
23 + /**
24 + * Returns the name of the main component registered from JavaScript. This is used to schedule
25 + * rendering of the component.
26 + */
27 + @Override
28 + protected String getMainComponentName() {
29 + return "FWIoT";
30 + }
31 +}
1 +package com.fwiot;
2 +
3 +import android.app.Application;
4 +import android.content.Context;
5 +import com.facebook.react.PackageList;
6 +import com.facebook.react.ReactApplication;
7 +import com.facebook.react.ReactNativeHost;
8 +import com.facebook.react.ReactPackage;
9 +import com.facebook.soloader.SoLoader;
10 +import java.lang.reflect.InvocationTargetException;
11 +import java.util.List;
12 +
13 +public class MainApplication extends Application implements ReactApplication {
14 +
15 + private final ReactNativeHost mReactNativeHost =
16 + new ReactNativeHost(this) {
17 + @Override
18 + public boolean getUseDeveloperSupport() {
19 + return BuildConfig.DEBUG;
20 + }
21 +
22 + @Override
23 + protected List<ReactPackage> getPackages() {
24 + @SuppressWarnings("UnnecessaryLocalVariable")
25 + List<ReactPackage> packages = new PackageList(this).getPackages();
26 + // Packages that cannot be autolinked yet can be added manually here, for example:
27 + // packages.add(new MyReactNativePackage());
28 + return packages;
29 + }
30 +
31 + @Override
32 + protected String getJSMainModuleName() {
33 + return "index";
34 + }
35 + };
36 +
37 + @Override
38 + public ReactNativeHost getReactNativeHost() {
39 + return mReactNativeHost;
40 + }
41 +
42 + @Override
43 + public void onCreate() {
44 + super.onCreate();
45 + SoLoader.init(this, /* native exopackage */ false);
46 + initializeFlipper(this); // Remove this line if you don't want Flipper enabled
47 + }
48 +
49 + /**
50 + * Loads Flipper in React Native templates.
51 + *
52 + * @param context
53 + */
54 + private static void initializeFlipper(Context context) {
55 + if (BuildConfig.DEBUG) {
56 + try {
57 + /*
58 + We use reflection here to pick up the class that initializes Flipper,
59 + since Flipper library is not available in release mode
60 + */
61 + Class<?> aClass = Class.forName("com.facebook.flipper.ReactNativeFlipper");
62 + aClass.getMethod("initializeFlipper", Context.class).invoke(null, context);
63 + } catch (ClassNotFoundException e) {
64 + e.printStackTrace();
65 + } catch (NoSuchMethodException e) {
66 + e.printStackTrace();
67 + } catch (IllegalAccessException e) {
68 + e.printStackTrace();
69 + } catch (InvocationTargetException e) {
70 + e.printStackTrace();
71 + }
72 + }
73 + }
74 +}
1 +<resources>
2 + <string name="app_name">FWIoT</string>
3 +</resources>
1 +<resources>
2 +
3 + <!-- Base application theme. -->
4 + <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
5 + <!-- Customize your theme here. -->
6 + <item name="android:textColor">#000000</item>
7 + </style>
8 +
9 +</resources>
1 +// Top-level build file where you can add configuration options common to all sub-projects/modules.
2 +
3 +buildscript {
4 + ext {
5 + buildToolsVersion = "28.0.3"
6 + minSdkVersion = 16
7 + compileSdkVersion = 28
8 + targetSdkVersion = 28
9 + }
10 + repositories {
11 + google()
12 + jcenter()
13 + }
14 + dependencies {
15 + classpath("com.android.tools.build:gradle:3.4.2")
16 +
17 + // NOTE: Do not place your application dependencies here; they belong
18 + // in the individual module build.gradle files
19 + }
20 +}
21 +
22 +allprojects {
23 + repositories {
24 + mavenLocal()
25 + maven {
26 + // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
27 + url("$rootDir/../node_modules/react-native/android")
28 + }
29 + maven {
30 + // Android JSC is installed from npm
31 + url("$rootDir/../node_modules/jsc-android/dist")
32 + }
33 +
34 + google()
35 + jcenter()
36 + maven { url 'https://jitpack.io' }
37 + }
38 +}
1 +# Project-wide Gradle settings.
2 +
3 +# IDE (e.g. Android Studio) users:
4 +# Gradle settings configured through the IDE *will override*
5 +# any settings specified in this file.
6 +
7 +# For more details on how to configure your build environment visit
8 +# http://www.gradle.org/docs/current/userguide/build_environment.html
9 +
10 +# Specifies the JVM arguments used for the daemon process.
11 +# The setting is particularly useful for tweaking memory settings.
12 +# Default value: -Xmx10248m -XX:MaxPermSize=256m
13 +# org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
14 +
15 +# When configured, Gradle will run in incubating parallel mode.
16 +# This option should only be used with decoupled projects. More details, visit
17 +# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
18 +# org.gradle.parallel=true
19 +
20 +android.useAndroidX=true
21 +android.enableJetifier=true
No preview for this file type
1 +distributionBase=GRADLE_USER_HOME
2 +distributionPath=wrapper/dists
3 +distributionUrl=https\://services.gradle.org/distributions/gradle-5.5-all.zip
4 +zipStoreBase=GRADLE_USER_HOME
5 +zipStorePath=wrapper/dists
1 +#!/usr/bin/env sh
2 +
3 +#
4 +# Copyright 2015 the original author or authors.
5 +#
6 +# Licensed under the Apache License, Version 2.0 (the "License");
7 +# you may not use this file except in compliance with the License.
8 +# You may obtain a copy of the License at
9 +#
10 +# http://www.apache.org/licenses/LICENSE-2.0
11 +#
12 +# Unless required by applicable law or agreed to in writing, software
13 +# distributed under the License is distributed on an "AS IS" BASIS,
14 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 +# See the License for the specific language governing permissions and
16 +# limitations under the License.
17 +#
18 +
19 +##############################################################################
20 +##
21 +## Gradle start up script for UN*X
22 +##
23 +##############################################################################
24 +
25 +# Attempt to set APP_HOME
26 +# Resolve links: $0 may be a link
27 +PRG="$0"
28 +# Need this for relative symlinks.
29 +while [ -h "$PRG" ] ; do
30 + ls=`ls -ld "$PRG"`
31 + link=`expr "$ls" : '.*-> \(.*\)$'`
32 + if expr "$link" : '/.*' > /dev/null; then
33 + PRG="$link"
34 + else
35 + PRG=`dirname "$PRG"`"/$link"
36 + fi
37 +done
38 +SAVED="`pwd`"
39 +cd "`dirname \"$PRG\"`/" >/dev/null
40 +APP_HOME="`pwd -P`"
41 +cd "$SAVED" >/dev/null
42 +
43 +APP_NAME="Gradle"
44 +APP_BASE_NAME=`basename "$0"`
45 +
46 +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47 +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48 +
49 +# Use the maximum available, or set MAX_FD != -1 to use that value.
50 +MAX_FD="maximum"
51 +
52 +warn () {
53 + echo "$*"
54 +}
55 +
56 +die () {
57 + echo
58 + echo "$*"
59 + echo
60 + exit 1
61 +}
62 +
63 +# OS specific support (must be 'true' or 'false').
64 +cygwin=false
65 +msys=false
66 +darwin=false
67 +nonstop=false
68 +case "`uname`" in
69 + CYGWIN* )
70 + cygwin=true
71 + ;;
72 + Darwin* )
73 + darwin=true
74 + ;;
75 + MINGW* )
76 + msys=true
77 + ;;
78 + NONSTOP* )
79 + nonstop=true
80 + ;;
81 +esac
82 +
83 +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84 +
85 +# Determine the Java command to use to start the JVM.
86 +if [ -n "$JAVA_HOME" ] ; then
87 + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
88 + # IBM's JDK on AIX uses strange locations for the executables
89 + JAVACMD="$JAVA_HOME/jre/sh/java"
90 + else
91 + JAVACMD="$JAVA_HOME/bin/java"
92 + fi
93 + if [ ! -x "$JAVACMD" ] ; then
94 + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
95 +
96 +Please set the JAVA_HOME variable in your environment to match the
97 +location of your Java installation."
98 + fi
99 +else
100 + JAVACMD="java"
101 + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
102 +
103 +Please set the JAVA_HOME variable in your environment to match the
104 +location of your Java installation."
105 +fi
106 +
107 +# Increase the maximum file descriptors if we can.
108 +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
109 + MAX_FD_LIMIT=`ulimit -H -n`
110 + if [ $? -eq 0 ] ; then
111 + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
112 + MAX_FD="$MAX_FD_LIMIT"
113 + fi
114 + ulimit -n $MAX_FD
115 + if [ $? -ne 0 ] ; then
116 + warn "Could not set maximum file descriptor limit: $MAX_FD"
117 + fi
118 + else
119 + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
120 + fi
121 +fi
122 +
123 +# For Darwin, add options to specify how the application appears in the dock
124 +if $darwin; then
125 + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
126 +fi
127 +
128 +# For Cygwin, switch paths to Windows format before running java
129 +if $cygwin ; then
130 + APP_HOME=`cygpath --path --mixed "$APP_HOME"`
131 + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
132 + JAVACMD=`cygpath --unix "$JAVACMD"`
133 +
134 + # We build the pattern for arguments to be converted via cygpath
135 + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
136 + SEP=""
137 + for dir in $ROOTDIRSRAW ; do
138 + ROOTDIRS="$ROOTDIRS$SEP$dir"
139 + SEP="|"
140 + done
141 + OURCYGPATTERN="(^($ROOTDIRS))"
142 + # Add a user-defined pattern to the cygpath arguments
143 + if [ "$GRADLE_CYGPATTERN" != "" ] ; then
144 + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
145 + fi
146 + # Now convert the arguments - kludge to limit ourselves to /bin/sh
147 + i=0
148 + for arg in "$@" ; do
149 + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
150 + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
151 +
152 + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
153 + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
154 + else
155 + eval `echo args$i`="\"$arg\""
156 + fi
157 + i=$((i+1))
158 + done
159 + case $i in
160 + (0) set -- ;;
161 + (1) set -- "$args0" ;;
162 + (2) set -- "$args0" "$args1" ;;
163 + (3) set -- "$args0" "$args1" "$args2" ;;
164 + (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
165 + (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
166 + (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
167 + (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
168 + (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
169 + (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
170 + esac
171 +fi
172 +
173 +# Escape application args
174 +save () {
175 + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
176 + echo " "
177 +}
178 +APP_ARGS=$(save "$@")
179 +
180 +# Collect all arguments for the java command, following the shell quoting and substitution rules
181 +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
182 +
183 +# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
184 +if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
185 + cd "$(dirname "$0")"
186 +fi
187 +
188 +exec "$JAVACMD" "$@"
1 +@rem
2 +@rem Copyright 2015 the original author or authors.
3 +@rem
4 +@rem Licensed under the Apache License, Version 2.0 (the "License");
5 +@rem you may not use this file except in compliance with the License.
6 +@rem You may obtain a copy of the License at
7 +@rem
8 +@rem http://www.apache.org/licenses/LICENSE-2.0
9 +@rem
10 +@rem Unless required by applicable law or agreed to in writing, software
11 +@rem distributed under the License is distributed on an "AS IS" BASIS,
12 +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 +@rem See the License for the specific language governing permissions and
14 +@rem limitations under the License.
15 +@rem
16 +
17 +@if "%DEBUG%" == "" @echo off
18 +@rem ##########################################################################
19 +@rem
20 +@rem Gradle startup script for Windows
21 +@rem
22 +@rem ##########################################################################
23 +
24 +@rem Set local scope for the variables with windows NT shell
25 +if "%OS%"=="Windows_NT" setlocal
26 +
27 +set DIRNAME=%~dp0
28 +if "%DIRNAME%" == "" set DIRNAME=.
29 +set APP_BASE_NAME=%~n0
30 +set APP_HOME=%DIRNAME%
31 +
32 +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
33 +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
34 +
35 +@rem Find java.exe
36 +if defined JAVA_HOME goto findJavaFromJavaHome
37 +
38 +set JAVA_EXE=java.exe
39 +%JAVA_EXE% -version >NUL 2>&1
40 +if "%ERRORLEVEL%" == "0" goto init
41 +
42 +echo.
43 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
44 +echo.
45 +echo Please set the JAVA_HOME variable in your environment to match the
46 +echo location of your Java installation.
47 +
48 +goto fail
49 +
50 +:findJavaFromJavaHome
51 +set JAVA_HOME=%JAVA_HOME:"=%
52 +set JAVA_EXE=%JAVA_HOME%/bin/java.exe
53 +
54 +if exist "%JAVA_EXE%" goto init
55 +
56 +echo.
57 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
58 +echo.
59 +echo Please set the JAVA_HOME variable in your environment to match the
60 +echo location of your Java installation.
61 +
62 +goto fail
63 +
64 +:init
65 +@rem Get command-line arguments, handling Windows variants
66 +
67 +if not "%OS%" == "Windows_NT" goto win9xME_args
68 +
69 +:win9xME_args
70 +@rem Slurp the command line arguments.
71 +set CMD_LINE_ARGS=
72 +set _SKIP=2
73 +
74 +:win9xME_args_slurp
75 +if "x%~1" == "x" goto execute
76 +
77 +set CMD_LINE_ARGS=%*
78 +
79 +:execute
80 +@rem Setup the command line
81 +
82 +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
83 +
84 +@rem Execute Gradle
85 +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
86 +
87 +:end
88 +@rem End local scope for the variables with windows NT shell
89 +if "%ERRORLEVEL%"=="0" goto mainEnd
90 +
91 +:fail
92 +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
93 +rem the _cmd.exe /c_ return code!
94 +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
95 +exit /b 1
96 +
97 +:mainEnd
98 +if "%OS%"=="Windows_NT" endlocal
99 +
100 +:omega
1 +rootProject.name = 'FWIoT'
2 +apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings)
3 +include ':app'
4 +include ':react-native-push-notification'
5 +project(':react-native-push-notification').projectDir = file('../node_modules/react-native-push-notification/android')
1 +{
2 + "name": "FWIoT",
3 + "displayName": "FWIoT"
4 +}
...\ No newline at end of file ...\ No newline at end of file
No preview for this file type
1 +module.exports = {
2 + presets: ['module:metro-react-native-babel-preset'],
3 +};
1 +{"web":{"client_id":"978869138601-u3euf0c04sbdor68r30m599gilvjn91e.apps.googleusercontent.com","project_id":"reminder-talk","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"N7Uh_oVQZt-almzA4DkM4bm_"}}
...\ No newline at end of file ...\ No newline at end of file
1 +/**
2 + * @format
3 + */
4 +
5 +import {AppRegistry} from 'react-native';
6 +import App from './App';
7 +import {name as appName} from './app.json';
8 +
9 +AppRegistry.registerComponent(appName, () => App);
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3 +<plist version="1.0">
4 +<dict>
5 + <key>CFBundleDevelopmentRegion</key>
6 + <string>en</string>
7 + <key>CFBundleExecutable</key>
8 + <string>$(EXECUTABLE_NAME)</string>
9 + <key>CFBundleIdentifier</key>
10 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11 + <key>CFBundleInfoDictionaryVersion</key>
12 + <string>6.0</string>
13 + <key>CFBundleName</key>
14 + <string>$(PRODUCT_NAME)</string>
15 + <key>CFBundlePackageType</key>
16 + <string>APPL</string>
17 + <key>CFBundleShortVersionString</key>
18 + <string>1.0</string>
19 + <key>CFBundleSignature</key>
20 + <string>????</string>
21 + <key>CFBundleVersion</key>
22 + <string>1</string>
23 + <key>LSRequiresIPhoneOS</key>
24 + <true/>
25 + <key>NSAppTransportSecurity</key>
26 + <dict>
27 + <key>NSExceptionDomains</key>
28 + <dict>
29 + <key>localhost</key>
30 + <dict>
31 + <key>NSExceptionAllowsInsecureHTTPLoads</key>
32 + <true/>
33 + </dict>
34 + </dict>
35 + </dict>
36 + <key>NSLocationWhenInUseUsageDescription</key>
37 + <string></string>
38 + <key>UILaunchStoryboardName</key>
39 + <string>LaunchScreen</string>
40 + <key>UIRequiredDeviceCapabilities</key>
41 + <array>
42 + <string>armv7</string>
43 + </array>
44 + <key>UISupportedInterfaceOrientations</key>
45 + <array>
46 + <string>UIInterfaceOrientationPortrait</string>
47 + <string>UIInterfaceOrientationLandscapeLeft</string>
48 + <string>UIInterfaceOrientationLandscapeRight</string>
49 + </array>
50 + <key>UIViewControllerBasedStatusBarAppearance</key>
51 + <false/>
52 +</dict>
53 +</plist>
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3 +<plist version="1.0">
4 +<dict>
5 + <key>CFBundleDevelopmentRegion</key>
6 + <string>en</string>
7 + <key>CFBundleExecutable</key>
8 + <string>$(EXECUTABLE_NAME)</string>
9 + <key>CFBundleIdentifier</key>
10 + <string>org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)</string>
11 + <key>CFBundleInfoDictionaryVersion</key>
12 + <string>6.0</string>
13 + <key>CFBundleName</key>
14 + <string>$(PRODUCT_NAME)</string>
15 + <key>CFBundlePackageType</key>
16 + <string>BNDL</string>
17 + <key>CFBundleShortVersionString</key>
18 + <string>1.0</string>
19 + <key>CFBundleSignature</key>
20 + <string>????</string>
21 + <key>CFBundleVersion</key>
22 + <string>1</string>
23 +</dict>
24 +</plist>
1 +// !$*UTF8*$!
2 +{
3 + archiveVersion = 1;
4 + classes = {
5 + };
6 + objectVersion = 46;
7 + objects = {
8 +/* Begin PBXBuildFile section */
9 + 00E356F31AD99517003FC87E /* FWIoTTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* FWIoTTests.m */; };
10 + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
11 + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
12 + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
13 + 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
14 + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
15 + 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
16 + 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
17 + 2DCD954D1E0B4F2C00145EB5 /* FWIoTTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* FWIoTTests.m */; };
18 + 6C64FC6A06D242DBB6C4E507 /* BMJUA_ttf.ttf in Resources */ = {isa = PBXBuildFile; fileRef = DD27CE7DA8A446B6BB285B68 /* BMJUA_ttf.ttf */; };
19 +/* End PBXBuildFile section */
20 +
21 +/* Begin PBXContainerItemProxy section */
22 + 00E356F41AD99517003FC87E /* PBXContainerItemProxy */ = {
23 + isa = PBXContainerItemProxy;
24 + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
25 + proxyType = 1;
26 + remoteGlobalIDString = 13B07F861A680F5B00A75B9A;
27 + remoteInfo = FWIoT;
28 + };
29 + 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */ = {
30 + isa = PBXContainerItemProxy;
31 + containerPortal = 83CBB9F71A601CBA00E9B192 /* Project object */;
32 + proxyType = 1;
33 + remoteGlobalIDString = 2D02E47A1E0B4A5D006451C7;
34 + remoteInfo = "FWIoT-tvOS";
35 + };
36 +/* End PBXContainerItemProxy section */
37 +
38 +/* Begin PBXFileReference section */
39 + 008F07F21AC5B25A0029DE68 /* main.jsbundle */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = main.jsbundle; sourceTree = "<group>"; };
40 + 00E356EE1AD99517003FC87E /* FWIoTTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FWIoTTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
41 + 00E356F11AD99517003FC87E /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
42 + 00E356F21AD99517003FC87E /* FWIoTTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FWIoTTests.m; sourceTree = "<group>"; };
43 + 13B07F961A680F5B00A75B9A /* FWIoT.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = FWIoT.app; sourceTree = BUILT_PRODUCTS_DIR; };
44 + 13B07FAF1A68108700A75B9A /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = FWIoT/AppDelegate.h; sourceTree = "<group>"; };
45 + 13B07FB01A68108700A75B9A /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = FWIoT/AppDelegate.m; sourceTree = "<group>"; };
46 + 13B07FB21A68108700A75B9A /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = "<group>"; };
47 + 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = FWIoT/Images.xcassets; sourceTree = "<group>"; };
48 + 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = FWIoT/Info.plist; sourceTree = "<group>"; };
49 + 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = FWIoT/main.m; sourceTree = "<group>"; };
50 + 2D02E47B1E0B4A5D006451C7 /* FWIoT-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "FWIoT-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
51 + 2D02E4901E0B4A5D006451C7 /* FWIoT-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "FWIoT-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
52 + ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
53 + ED2971642150620600B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS12.0.sdk/System/Library/Frameworks/JavaScriptCore.framework; sourceTree = DEVELOPER_DIR; };
54 + DD27CE7DA8A446B6BB285B68 /* BMJUA_ttf.ttf */ = {isa = PBXFileReference; name = "BMJUA_ttf.ttf"; path = "../assets/fonts/BMJUA_ttf.ttf"; sourceTree = "<group>"; fileEncoding = undefined; lastKnownFileType = unknown; explicitFileType = undefined; includeInIndex = 0; };
55 +/* End PBXFileReference section */
56 +
57 +/* Begin PBXFrameworksBuildPhase section */
58 + 00E356EB1AD99517003FC87E /* Frameworks */ = {
59 + isa = PBXFrameworksBuildPhase;
60 + buildActionMask = 2147483647;
61 + files = (
62 + );
63 + runOnlyForDeploymentPostprocessing = 0;
64 + };
65 + 13B07F8C1A680F5B00A75B9A /* Frameworks */ = {
66 + isa = PBXFrameworksBuildPhase;
67 + buildActionMask = 2147483647;
68 + files = (
69 + );
70 + runOnlyForDeploymentPostprocessing = 0;
71 + };
72 + 2D02E4781E0B4A5D006451C7 /* Frameworks */ = {
73 + isa = PBXFrameworksBuildPhase;
74 + buildActionMask = 2147483647;
75 + files = (
76 + );
77 + runOnlyForDeploymentPostprocessing = 0;
78 + };
79 + 2D02E48D1E0B4A5D006451C7 /* Frameworks */ = {
80 + isa = PBXFrameworksBuildPhase;
81 + buildActionMask = 2147483647;
82 + files = (
83 + );
84 + runOnlyForDeploymentPostprocessing = 0;
85 + };
86 +/* End PBXFrameworksBuildPhase section */
87 +
88 +/* Begin PBXGroup section */
89 + 00E356EF1AD99517003FC87E /* FWIoTTests */ = {
90 + isa = PBXGroup;
91 + children = (
92 + 00E356F21AD99517003FC87E /* FWIoTTests.m */,
93 + 00E356F01AD99517003FC87E /* Supporting Files */,
94 + );
95 + path = FWIoTTests;
96 + sourceTree = "<group>";
97 + };
98 + 00E356F01AD99517003FC87E /* Supporting Files */ = {
99 + isa = PBXGroup;
100 + children = (
101 + 00E356F11AD99517003FC87E /* Info.plist */,
102 + );
103 + name = "Supporting Files";
104 + sourceTree = "<group>";
105 + };
106 + 13B07FAE1A68108700A75B9A /* FWIoT */ = {
107 + isa = PBXGroup;
108 + children = (
109 + 008F07F21AC5B25A0029DE68 /* main.jsbundle */,
110 + 13B07FAF1A68108700A75B9A /* AppDelegate.h */,
111 + 13B07FB01A68108700A75B9A /* AppDelegate.m */,
112 + 13B07FB51A68108700A75B9A /* Images.xcassets */,
113 + 13B07FB61A68108700A75B9A /* Info.plist */,
114 + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
115 + 13B07FB71A68108700A75B9A /* main.m */,
116 + );
117 + name = FWIoT;
118 + sourceTree = "<group>";
119 + };
120 + 2D16E6871FA4F8E400B85C8A /* Frameworks */ = {
121 + isa = PBXGroup;
122 + children = (
123 + ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
124 + ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
125 + );
126 + name = Frameworks;
127 + sourceTree = "<group>";
128 + };
129 + 832341AE1AAA6A7D00B99B32 /* Libraries */ = {
130 + isa = PBXGroup;
131 + children = (
132 + );
133 + name = Libraries;
134 + sourceTree = "<group>";
135 + };
136 + 83CBB9F61A601CBA00E9B192 = {
137 + isa = PBXGroup;
138 + children = (
139 + 13B07FAE1A68108700A75B9A /* FWIoT */,
140 + 832341AE1AAA6A7D00B99B32 /* Libraries */,
141 + 00E356EF1AD99517003FC87E /* FWIoTTests */,
142 + 83CBBA001A601CBA00E9B192 /* Products */,
143 + 2D16E6871FA4F8E400B85C8A /* Frameworks */,
144 + 1A8883B26DB34EFD935B3086 /* Resources */,
145 + );
146 + indentWidth = 2;
147 + sourceTree = "<group>";
148 + tabWidth = 2;
149 + usesTabs = 0;
150 + };
151 + 83CBBA001A601CBA00E9B192 /* Products */ = {
152 + isa = PBXGroup;
153 + children = (
154 + 13B07F961A680F5B00A75B9A /* FWIoT.app */,
155 + 00E356EE1AD99517003FC87E /* FWIoTTests.xctest */,
156 + 2D02E47B1E0B4A5D006451C7 /* FWIoT-tvOS.app */,
157 + 2D02E4901E0B4A5D006451C7 /* FWIoT-tvOSTests.xctest */,
158 + );
159 + name = Products;
160 + sourceTree = "<group>";
161 + };
162 + 1A8883B26DB34EFD935B3086 /* Resources */ = {
163 + isa = "PBXGroup";
164 + children = (
165 + DD27CE7DA8A446B6BB285B68 /* BMJUA_ttf.ttf */,
166 + );
167 + name = Resources;
168 + sourceTree = "<group>";
169 + path = "";
170 + };
171 +/* End PBXGroup section */
172 +
173 +/* Begin PBXNativeTarget section */
174 + 00E356ED1AD99517003FC87E /* FWIoTTests */ = {
175 + isa = PBXNativeTarget;
176 + buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "FWIoTTests" */;
177 + buildPhases = (
178 + 00E356EA1AD99517003FC87E /* Sources */,
179 + 00E356EB1AD99517003FC87E /* Frameworks */,
180 + 00E356EC1AD99517003FC87E /* Resources */,
181 + );
182 + buildRules = (
183 + );
184 + dependencies = (
185 + 00E356F51AD99517003FC87E /* PBXTargetDependency */,
186 + );
187 + name = FWIoTTests;
188 + productName = FWIoTTests;
189 + productReference = 00E356EE1AD99517003FC87E /* FWIoTTests.xctest */;
190 + productType = "com.apple.product-type.bundle.unit-test";
191 + };
192 + 13B07F861A680F5B00A75B9A /* FWIoT */ = {
193 + isa = PBXNativeTarget;
194 + buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "FWIoT" */;
195 + buildPhases = (
196 + FD10A7F022414F080027D42C /* Start Packager */,
197 + 13B07F871A680F5B00A75B9A /* Sources */,
198 + 13B07F8C1A680F5B00A75B9A /* Frameworks */,
199 + 13B07F8E1A680F5B00A75B9A /* Resources */,
200 + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
201 + );
202 + buildRules = (
203 + );
204 + dependencies = (
205 + );
206 + name = FWIoT;
207 + productName = "FWIoT";
208 + productReference = 13B07F961A680F5B00A75B9A /* FWIoT.app */;
209 + productType = "com.apple.product-type.application";
210 + };
211 + 2D02E47A1E0B4A5D006451C7 /* FWIoT-tvOS */ = {
212 + isa = PBXNativeTarget;
213 + buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "FWIoT-tvOS" */;
214 + buildPhases = (
215 + FD10A7F122414F3F0027D42C /* Start Packager */,
216 + 2D02E4771E0B4A5D006451C7 /* Sources */,
217 + 2D02E4781E0B4A5D006451C7 /* Frameworks */,
218 + 2D02E4791E0B4A5D006451C7 /* Resources */,
219 + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */,
220 + );
221 + buildRules = (
222 + );
223 + dependencies = (
224 + );
225 + name = "FWIoT-tvOS";
226 + productName = "FWIoT-tvOS";
227 + productReference = 2D02E47B1E0B4A5D006451C7 /* FWIoT-tvOS.app */;
228 + productType = "com.apple.product-type.application";
229 + };
230 + 2D02E48F1E0B4A5D006451C7 /* FWIoT-tvOSTests */ = {
231 + isa = PBXNativeTarget;
232 + buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "FWIoT-tvOSTests" */;
233 + buildPhases = (
234 + 2D02E48C1E0B4A5D006451C7 /* Sources */,
235 + 2D02E48D1E0B4A5D006451C7 /* Frameworks */,
236 + 2D02E48E1E0B4A5D006451C7 /* Resources */,
237 + );
238 + buildRules = (
239 + );
240 + dependencies = (
241 + 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */,
242 + );
243 + name = "FWIoT-tvOSTests";
244 + productName = "FWIoT-tvOSTests";
245 + productReference = 2D02E4901E0B4A5D006451C7 /* FWIoT-tvOSTests.xctest */;
246 + productType = "com.apple.product-type.bundle.unit-test";
247 + };
248 +/* End PBXNativeTarget section */
249 +
250 +/* Begin PBXProject section */
251 + 83CBB9F71A601CBA00E9B192 /* Project object */ = {
252 + isa = PBXProject;
253 + attributes = {
254 + LastUpgradeCheck = 940;
255 + ORGANIZATIONNAME = Facebook;
256 + TargetAttributes = {
257 + 00E356ED1AD99517003FC87E = {
258 + CreatedOnToolsVersion = 6.2;
259 + TestTargetID = 13B07F861A680F5B00A75B9A;
260 + };
261 + 2D02E47A1E0B4A5D006451C7 = {
262 + CreatedOnToolsVersion = 8.2.1;
263 + ProvisioningStyle = Automatic;
264 + };
265 + 2D02E48F1E0B4A5D006451C7 = {
266 + CreatedOnToolsVersion = 8.2.1;
267 + ProvisioningStyle = Automatic;
268 + TestTargetID = 2D02E47A1E0B4A5D006451C7;
269 + };
270 + };
271 + };
272 + buildConfigurationList = 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "FWIoT" */;
273 + compatibilityVersion = "Xcode 3.2";
274 + developmentRegion = English;
275 + hasScannedForEncodings = 0;
276 + knownRegions = (
277 + en,
278 + Base,
279 + );
280 + mainGroup = 83CBB9F61A601CBA00E9B192;
281 + productRefGroup = 83CBBA001A601CBA00E9B192 /* Products */;
282 + projectDirPath = "";
283 + projectRoot = "";
284 + targets = (
285 + 13B07F861A680F5B00A75B9A /* FWIoT */,
286 + 00E356ED1AD99517003FC87E /* FWIoTTests */,
287 + 2D02E47A1E0B4A5D006451C7 /* FWIoT-tvOS */,
288 + 2D02E48F1E0B4A5D006451C7 /* FWIoT-tvOSTests */,
289 + );
290 + };
291 +/* End PBXProject section */
292 +
293 +/* Begin PBXResourcesBuildPhase section */
294 + 00E356EC1AD99517003FC87E /* Resources */ = {
295 + isa = PBXResourcesBuildPhase;
296 + buildActionMask = 2147483647;
297 + files = (
298 + );
299 + runOnlyForDeploymentPostprocessing = 0;
300 + };
301 + 13B07F8E1A680F5B00A75B9A /* Resources */ = {
302 + isa = PBXResourcesBuildPhase;
303 + buildActionMask = 2147483647;
304 + files = (
305 + 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
306 + 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
307 + 6C64FC6A06D242DBB6C4E507 /* BMJUA_ttf.ttf in Resources */,
308 + );
309 + runOnlyForDeploymentPostprocessing = 0;
310 + };
311 + 2D02E4791E0B4A5D006451C7 /* Resources */ = {
312 + isa = PBXResourcesBuildPhase;
313 + buildActionMask = 2147483647;
314 + files = (
315 + 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */,
316 + );
317 + runOnlyForDeploymentPostprocessing = 0;
318 + };
319 + 2D02E48E1E0B4A5D006451C7 /* Resources */ = {
320 + isa = PBXResourcesBuildPhase;
321 + buildActionMask = 2147483647;
322 + files = (
323 + );
324 + runOnlyForDeploymentPostprocessing = 0;
325 + };
326 +/* End PBXResourcesBuildPhase section */
327 +
328 +/* Begin PBXShellScriptBuildPhase section */
329 + 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */ = {
330 + isa = PBXShellScriptBuildPhase;
331 + buildActionMask = 2147483647;
332 + files = (
333 + );
334 + inputPaths = (
335 + );
336 + name = "Bundle React Native code and images";
337 + outputPaths = (
338 + );
339 + runOnlyForDeploymentPostprocessing = 0;
340 + shellPath = /bin/sh;
341 + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
342 + };
343 + 2D02E4CB1E0B4B27006451C7 /* Bundle React Native Code And Images */ = {
344 + isa = PBXShellScriptBuildPhase;
345 + buildActionMask = 2147483647;
346 + files = (
347 + );
348 + inputPaths = (
349 + );
350 + name = "Bundle React Native Code And Images";
351 + outputPaths = (
352 + );
353 + runOnlyForDeploymentPostprocessing = 0;
354 + shellPath = /bin/sh;
355 + shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
356 + };
357 + FD10A7F022414F080027D42C /* Start Packager */ = {
358 + isa = PBXShellScriptBuildPhase;
359 + buildActionMask = 2147483647;
360 + files = (
361 + );
362 + inputFileListPaths = (
363 + );
364 + inputPaths = (
365 + );
366 + name = "Start Packager";
367 + outputFileListPaths = (
368 + );
369 + outputPaths = (
370 + );
371 + runOnlyForDeploymentPostprocessing = 0;
372 + shellPath = /bin/sh;
373 + shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
374 + showEnvVarsInLog = 0;
375 + };
376 + FD10A7F122414F3F0027D42C /* Start Packager */ = {
377 + isa = PBXShellScriptBuildPhase;
378 + buildActionMask = 2147483647;
379 + files = (
380 + );
381 + inputFileListPaths = (
382 + );
383 + inputPaths = (
384 + );
385 + name = "Start Packager";
386 + outputFileListPaths = (
387 + );
388 + outputPaths = (
389 + );
390 + runOnlyForDeploymentPostprocessing = 0;
391 + shellPath = /bin/sh;
392 + shellScript = "export RCT_METRO_PORT=\"${RCT_METRO_PORT:=8081}\"\necho \"export RCT_METRO_PORT=${RCT_METRO_PORT}\" > \"${SRCROOT}/../node_modules/react-native/scripts/.packager.env\"\nif [ -z \"${RCT_NO_LAUNCH_PACKAGER+xxx}\" ] ; then\n if nc -w 5 -z localhost ${RCT_METRO_PORT} ; then\n if ! curl -s \"http://localhost:${RCT_METRO_PORT}/status\" | grep -q \"packager-status:running\" ; then\n echo \"Port ${RCT_METRO_PORT} already in use, packager is either not running or not running correctly\"\n exit 2\n fi\n else\n open \"$SRCROOT/../node_modules/react-native/scripts/launchPackager.command\" || echo \"Can't start packager automatically\"\n fi\nfi\n";
393 + showEnvVarsInLog = 0;
394 + };
395 +/* End PBXShellScriptBuildPhase section */
396 +
397 +/* Begin PBXSourcesBuildPhase section */
398 + 00E356EA1AD99517003FC87E /* Sources */ = {
399 + isa = PBXSourcesBuildPhase;
400 + buildActionMask = 2147483647;
401 + files = (
402 + 00E356F31AD99517003FC87E /* FWIoTTests.m in Sources */,
403 + );
404 + runOnlyForDeploymentPostprocessing = 0;
405 + };
406 + 13B07F871A680F5B00A75B9A /* Sources */ = {
407 + isa = PBXSourcesBuildPhase;
408 + buildActionMask = 2147483647;
409 + files = (
410 + 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */,
411 + 13B07FC11A68108700A75B9A /* main.m in Sources */,
412 + );
413 + runOnlyForDeploymentPostprocessing = 0;
414 + };
415 + 2D02E4771E0B4A5D006451C7 /* Sources */ = {
416 + isa = PBXSourcesBuildPhase;
417 + buildActionMask = 2147483647;
418 + files = (
419 + 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */,
420 + 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */,
421 + );
422 + runOnlyForDeploymentPostprocessing = 0;
423 + };
424 + 2D02E48C1E0B4A5D006451C7 /* Sources */ = {
425 + isa = PBXSourcesBuildPhase;
426 + buildActionMask = 2147483647;
427 + files = (
428 + 2DCD954D1E0B4F2C00145EB5 /* FWIoTTests.m in Sources */,
429 + );
430 + runOnlyForDeploymentPostprocessing = 0;
431 + };
432 +/* End PBXSourcesBuildPhase section */
433 +
434 +/* Begin PBXTargetDependency section */
435 + 00E356F51AD99517003FC87E /* PBXTargetDependency */ = {
436 + isa = PBXTargetDependency;
437 + target = 13B07F861A680F5B00A75B9A /* FWIoT */;
438 + targetProxy = 00E356F41AD99517003FC87E /* PBXContainerItemProxy */;
439 + };
440 + 2D02E4921E0B4A5D006451C7 /* PBXTargetDependency */ = {
441 + isa = PBXTargetDependency;
442 + target = 2D02E47A1E0B4A5D006451C7 /* FWIoT-tvOS */;
443 + targetProxy = 2D02E4911E0B4A5D006451C7 /* PBXContainerItemProxy */;
444 + };
445 +/* End PBXTargetDependency section */
446 +
447 +/* Begin PBXVariantGroup section */
448 + 13B07FB11A68108700A75B9A /* LaunchScreen.xib */ = {
449 + isa = PBXVariantGroup;
450 + children = (
451 + 13B07FB21A68108700A75B9A /* Base */,
452 + );
453 + name = LaunchScreen.xib;
454 + path = FWIoT;
455 + sourceTree = "<group>";
456 + };
457 +/* End PBXVariantGroup section */
458 +
459 +/* Begin XCBuildConfiguration section */
460 + 00E356F61AD99517003FC87E /* Debug */ = {
461 + isa = XCBuildConfiguration;
462 + buildSettings = {
463 + BUNDLE_LOADER = "$(TEST_HOST)";
464 + GCC_PREPROCESSOR_DEFINITIONS = (
465 + "DEBUG=1",
466 + "$(inherited)",
467 + );
468 + INFOPLIST_FILE = FWIoTTests/Info.plist;
469 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
470 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
471 + OTHER_LDFLAGS = (
472 + "-ObjC",
473 + "-lc++",
474 + "$(inherited)",
475 + );
476 + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
477 + PRODUCT_NAME = "$(TARGET_NAME)";
478 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FWIoT.app/FWIoT";
479 + };
480 + name = Debug;
481 + };
482 + 00E356F71AD99517003FC87E /* Release */ = {
483 + isa = XCBuildConfiguration;
484 + buildSettings = {
485 + BUNDLE_LOADER = "$(TEST_HOST)";
486 + COPY_PHASE_STRIP = NO;
487 + INFOPLIST_FILE = FWIoTTests/Info.plist;
488 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
489 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
490 + OTHER_LDFLAGS = (
491 + "-ObjC",
492 + "-lc++",
493 + "$(inherited)",
494 + );
495 + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
496 + PRODUCT_NAME = "$(TARGET_NAME)";
497 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FWIoT.app/FWIoT";
498 + };
499 + name = Release;
500 + };
501 + 13B07F941A680F5B00A75B9A /* Debug */ = {
502 + isa = XCBuildConfiguration;
503 + buildSettings = {
504 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
505 + CURRENT_PROJECT_VERSION = 1;
506 + DEAD_CODE_STRIPPING = NO;
507 + INFOPLIST_FILE = FWIoT/Info.plist;
508 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
509 + OTHER_LDFLAGS = (
510 + "$(inherited)",
511 + "-ObjC",
512 + "-lc++",
513 + );
514 + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
515 + PRODUCT_NAME = FWIoT;
516 + VERSIONING_SYSTEM = "apple-generic";
517 + };
518 + name = Debug;
519 + };
520 + 13B07F951A680F5B00A75B9A /* Release */ = {
521 + isa = XCBuildConfiguration;
522 + buildSettings = {
523 + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
524 + CURRENT_PROJECT_VERSION = 1;
525 + INFOPLIST_FILE = FWIoT/Info.plist;
526 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
527 + OTHER_LDFLAGS = (
528 + "$(inherited)",
529 + "-ObjC",
530 + "-lc++",
531 + );
532 + PRODUCT_BUNDLE_IDENTIFIER = "org.reactjs.native.example.$(PRODUCT_NAME:rfc1034identifier)";
533 + PRODUCT_NAME = FWIoT;
534 + VERSIONING_SYSTEM = "apple-generic";
535 + };
536 + name = Release;
537 + };
538 + 2D02E4971E0B4A5E006451C7 /* Debug */ = {
539 + isa = XCBuildConfiguration;
540 + buildSettings = {
541 + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
542 + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
543 + CLANG_ANALYZER_NONNULL = YES;
544 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
545 + CLANG_WARN_INFINITE_RECURSION = YES;
546 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
547 + DEBUG_INFORMATION_FORMAT = dwarf;
548 + ENABLE_TESTABILITY = YES;
549 + GCC_NO_COMMON_BLOCKS = YES;
550 + INFOPLIST_FILE = "FWIoT-tvOS/Info.plist";
551 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
552 + OTHER_LDFLAGS = (
553 + "$(inherited)",
554 + "-ObjC",
555 + "-lc++",
556 + );
557 + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.FWIoT-tvOS";
558 + PRODUCT_NAME = "$(TARGET_NAME)";
559 + SDKROOT = appletvos;
560 + TARGETED_DEVICE_FAMILY = 3;
561 + TVOS_DEPLOYMENT_TARGET = 9.2;
562 + };
563 + name = Debug;
564 + };
565 + 2D02E4981E0B4A5E006451C7 /* Release */ = {
566 + isa = XCBuildConfiguration;
567 + buildSettings = {
568 + ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
569 + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
570 + CLANG_ANALYZER_NONNULL = YES;
571 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
572 + CLANG_WARN_INFINITE_RECURSION = YES;
573 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
574 + COPY_PHASE_STRIP = NO;
575 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
576 + GCC_NO_COMMON_BLOCKS = YES;
577 + INFOPLIST_FILE = "FWIoT-tvOS/Info.plist";
578 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
579 + OTHER_LDFLAGS = (
580 + "$(inherited)",
581 + "-ObjC",
582 + "-lc++",
583 + );
584 + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.FWIoT-tvOS";
585 + PRODUCT_NAME = "$(TARGET_NAME)";
586 + SDKROOT = appletvos;
587 + TARGETED_DEVICE_FAMILY = 3;
588 + TVOS_DEPLOYMENT_TARGET = 9.2;
589 + };
590 + name = Release;
591 + };
592 + 2D02E4991E0B4A5E006451C7 /* Debug */ = {
593 + isa = XCBuildConfiguration;
594 + buildSettings = {
595 + BUNDLE_LOADER = "$(TEST_HOST)";
596 + CLANG_ANALYZER_NONNULL = YES;
597 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
598 + CLANG_WARN_INFINITE_RECURSION = YES;
599 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
600 + DEBUG_INFORMATION_FORMAT = dwarf;
601 + ENABLE_TESTABILITY = YES;
602 + GCC_NO_COMMON_BLOCKS = YES;
603 + INFOPLIST_FILE = "FWIoT-tvOSTests/Info.plist";
604 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
605 + OTHER_LDFLAGS = (
606 + "$(inherited)",
607 + "-ObjC",
608 + "-lc++",
609 + );
610 + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.FWIoT-tvOSTests";
611 + PRODUCT_NAME = "$(TARGET_NAME)";
612 + SDKROOT = appletvos;
613 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FWIoT-tvOS.app/FWIoT-tvOS";
614 + TVOS_DEPLOYMENT_TARGET = 10.1;
615 + };
616 + name = Debug;
617 + };
618 + 2D02E49A1E0B4A5E006451C7 /* Release */ = {
619 + isa = XCBuildConfiguration;
620 + buildSettings = {
621 + BUNDLE_LOADER = "$(TEST_HOST)";
622 + CLANG_ANALYZER_NONNULL = YES;
623 + CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
624 + CLANG_WARN_INFINITE_RECURSION = YES;
625 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
626 + COPY_PHASE_STRIP = NO;
627 + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
628 + GCC_NO_COMMON_BLOCKS = YES;
629 + INFOPLIST_FILE = "FWIoT-tvOSTests/Info.plist";
630 + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
631 + OTHER_LDFLAGS = (
632 + "$(inherited)",
633 + "-ObjC",
634 + "-lc++",
635 + );
636 + PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.FWIoT-tvOSTests";
637 + PRODUCT_NAME = "$(TARGET_NAME)";
638 + SDKROOT = appletvos;
639 + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/FWIoT-tvOS.app/FWIoT-tvOS";
640 + TVOS_DEPLOYMENT_TARGET = 10.1;
641 + };
642 + name = Release;
643 + };
644 + 83CBBA201A601CBA00E9B192 /* Debug */ = {
645 + isa = XCBuildConfiguration;
646 + buildSettings = {
647 + ALWAYS_SEARCH_USER_PATHS = NO;
648 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
649 + CLANG_CXX_LIBRARY = "libc++";
650 + CLANG_ENABLE_MODULES = YES;
651 + CLANG_ENABLE_OBJC_ARC = YES;
652 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
653 + CLANG_WARN_BOOL_CONVERSION = YES;
654 + CLANG_WARN_COMMA = YES;
655 + CLANG_WARN_CONSTANT_CONVERSION = YES;
656 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
657 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
658 + CLANG_WARN_EMPTY_BODY = YES;
659 + CLANG_WARN_ENUM_CONVERSION = YES;
660 + CLANG_WARN_INFINITE_RECURSION = YES;
661 + CLANG_WARN_INT_CONVERSION = YES;
662 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
663 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
664 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
665 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
666 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
667 + CLANG_WARN_STRICT_PROTOTYPES = YES;
668 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
669 + CLANG_WARN_UNREACHABLE_CODE = YES;
670 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
671 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
672 + COPY_PHASE_STRIP = NO;
673 + ENABLE_STRICT_OBJC_MSGSEND = YES;
674 + ENABLE_TESTABILITY = YES;
675 + GCC_C_LANGUAGE_STANDARD = gnu99;
676 + GCC_DYNAMIC_NO_PIC = NO;
677 + GCC_NO_COMMON_BLOCKS = YES;
678 + GCC_OPTIMIZATION_LEVEL = 0;
679 + GCC_PREPROCESSOR_DEFINITIONS = (
680 + "DEBUG=1",
681 + "$(inherited)",
682 + );
683 + GCC_SYMBOLS_PRIVATE_EXTERN = NO;
684 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
685 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
686 + GCC_WARN_UNDECLARED_SELECTOR = YES;
687 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
688 + GCC_WARN_UNUSED_FUNCTION = YES;
689 + GCC_WARN_UNUSED_VARIABLE = YES;
690 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
691 + MTL_ENABLE_DEBUG_INFO = YES;
692 + ONLY_ACTIVE_ARCH = YES;
693 + SDKROOT = iphoneos;
694 + };
695 + name = Debug;
696 + };
697 + 83CBBA211A601CBA00E9B192 /* Release */ = {
698 + isa = XCBuildConfiguration;
699 + buildSettings = {
700 + ALWAYS_SEARCH_USER_PATHS = NO;
701 + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
702 + CLANG_CXX_LIBRARY = "libc++";
703 + CLANG_ENABLE_MODULES = YES;
704 + CLANG_ENABLE_OBJC_ARC = YES;
705 + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
706 + CLANG_WARN_BOOL_CONVERSION = YES;
707 + CLANG_WARN_COMMA = YES;
708 + CLANG_WARN_CONSTANT_CONVERSION = YES;
709 + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
710 + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
711 + CLANG_WARN_EMPTY_BODY = YES;
712 + CLANG_WARN_ENUM_CONVERSION = YES;
713 + CLANG_WARN_INFINITE_RECURSION = YES;
714 + CLANG_WARN_INT_CONVERSION = YES;
715 + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
716 + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
717 + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
718 + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
719 + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
720 + CLANG_WARN_STRICT_PROTOTYPES = YES;
721 + CLANG_WARN_SUSPICIOUS_MOVE = YES;
722 + CLANG_WARN_UNREACHABLE_CODE = YES;
723 + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
724 + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
725 + COPY_PHASE_STRIP = YES;
726 + ENABLE_NS_ASSERTIONS = NO;
727 + ENABLE_STRICT_OBJC_MSGSEND = YES;
728 + GCC_C_LANGUAGE_STANDARD = gnu99;
729 + GCC_NO_COMMON_BLOCKS = YES;
730 + GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
731 + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
732 + GCC_WARN_UNDECLARED_SELECTOR = YES;
733 + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
734 + GCC_WARN_UNUSED_FUNCTION = YES;
735 + GCC_WARN_UNUSED_VARIABLE = YES;
736 + IPHONEOS_DEPLOYMENT_TARGET = 9.0;
737 + MTL_ENABLE_DEBUG_INFO = NO;
738 + SDKROOT = iphoneos;
739 + VALIDATE_PRODUCT = YES;
740 + };
741 + name = Release;
742 + };
743 +/* End XCBuildConfiguration section */
744 +
745 +/* Begin XCConfigurationList section */
746 + 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "FWIoTTests" */ = {
747 + isa = XCConfigurationList;
748 + buildConfigurations = (
749 + 00E356F61AD99517003FC87E /* Debug */,
750 + 00E356F71AD99517003FC87E /* Release */,
751 + );
752 + defaultConfigurationIsVisible = 0;
753 + defaultConfigurationName = Release;
754 + };
755 + 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "FWIoT" */ = {
756 + isa = XCConfigurationList;
757 + buildConfigurations = (
758 + 13B07F941A680F5B00A75B9A /* Debug */,
759 + 13B07F951A680F5B00A75B9A /* Release */,
760 + );
761 + defaultConfigurationIsVisible = 0;
762 + defaultConfigurationName = Release;
763 + };
764 + 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "FWIoT-tvOS" */ = {
765 + isa = XCConfigurationList;
766 + buildConfigurations = (
767 + 2D02E4971E0B4A5E006451C7 /* Debug */,
768 + 2D02E4981E0B4A5E006451C7 /* Release */,
769 + );
770 + defaultConfigurationIsVisible = 0;
771 + defaultConfigurationName = Release;
772 + };
773 + 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "FWIoT-tvOSTests" */ = {
774 + isa = XCConfigurationList;
775 + buildConfigurations = (
776 + 2D02E4991E0B4A5E006451C7 /* Debug */,
777 + 2D02E49A1E0B4A5E006451C7 /* Release */,
778 + );
779 + defaultConfigurationIsVisible = 0;
780 + defaultConfigurationName = Release;
781 + };
782 + 83CBB9FA1A601CBA00E9B192 /* Build configuration list for PBXProject "FWIoT" */ = {
783 + isa = XCConfigurationList;
784 + buildConfigurations = (
785 + 83CBBA201A601CBA00E9B192 /* Debug */,
786 + 83CBBA211A601CBA00E9B192 /* Release */,
787 + );
788 + defaultConfigurationIsVisible = 0;
789 + defaultConfigurationName = Release;
790 + };
791 +/* End XCConfigurationList section */
792 + };
793 + rootObject = 83CBB9F71A601CBA00E9B192 /* Project object */;
794 +}
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<Scheme
3 + LastUpgradeVersion = "0940"
4 + version = "1.3">
5 + <BuildAction
6 + parallelizeBuildables = "NO"
7 + buildImplicitDependencies = "YES">
8 + <BuildActionEntries>
9 + <BuildActionEntry
10 + buildForTesting = "YES"
11 + buildForRunning = "YES"
12 + buildForProfiling = "YES"
13 + buildForArchiving = "YES"
14 + buildForAnalyzing = "YES">
15 + <BuildableReference
16 + BuildableIdentifier = "primary"
17 + BlueprintIdentifier = "2D2A28121D9B038B00D4039D"
18 + BuildableName = "libReact.a"
19 + BlueprintName = "React-tvOS"
20 + ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj">
21 + </BuildableReference>
22 + </BuildActionEntry>
23 + <BuildActionEntry
24 + buildForTesting = "YES"
25 + buildForRunning = "YES"
26 + buildForProfiling = "YES"
27 + buildForArchiving = "YES"
28 + buildForAnalyzing = "YES">
29 + <BuildableReference
30 + BuildableIdentifier = "primary"
31 + BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
32 + BuildableName = "FWIoT-tvOS.app"
33 + BlueprintName = "FWIoT-tvOS"
34 + ReferencedContainer = "container:FWIoT.xcodeproj">
35 + </BuildableReference>
36 + </BuildActionEntry>
37 + <BuildActionEntry
38 + buildForTesting = "YES"
39 + buildForRunning = "YES"
40 + buildForProfiling = "NO"
41 + buildForArchiving = "NO"
42 + buildForAnalyzing = "YES">
43 + <BuildableReference
44 + BuildableIdentifier = "primary"
45 + BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7"
46 + BuildableName = "FWIoT-tvOSTests.xctest"
47 + BlueprintName = "FWIoT-tvOSTests"
48 + ReferencedContainer = "container:FWIoT.xcodeproj">
49 + </BuildableReference>
50 + </BuildActionEntry>
51 + </BuildActionEntries>
52 + </BuildAction>
53 + <TestAction
54 + buildConfiguration = "Debug"
55 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
56 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
57 + shouldUseLaunchSchemeArgsEnv = "YES">
58 + <Testables>
59 + <TestableReference
60 + skipped = "NO">
61 + <BuildableReference
62 + BuildableIdentifier = "primary"
63 + BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7"
64 + BuildableName = "FWIoT-tvOSTests.xctest"
65 + BlueprintName = "FWIoT-tvOSTests"
66 + ReferencedContainer = "container:FWIoT.xcodeproj">
67 + </BuildableReference>
68 + </TestableReference>
69 + </Testables>
70 + <MacroExpansion>
71 + <BuildableReference
72 + BuildableIdentifier = "primary"
73 + BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
74 + BuildableName = "FWIoT-tvOS.app"
75 + BlueprintName = "FWIoT-tvOS"
76 + ReferencedContainer = "container:FWIoT.xcodeproj">
77 + </BuildableReference>
78 + </MacroExpansion>
79 + <AdditionalOptions>
80 + </AdditionalOptions>
81 + </TestAction>
82 + <LaunchAction
83 + buildConfiguration = "Debug"
84 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
85 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
86 + launchStyle = "0"
87 + useCustomWorkingDirectory = "NO"
88 + ignoresPersistentStateOnLaunch = "NO"
89 + debugDocumentVersioning = "YES"
90 + debugServiceExtension = "internal"
91 + allowLocationSimulation = "YES">
92 + <BuildableProductRunnable
93 + runnableDebuggingMode = "0">
94 + <BuildableReference
95 + BuildableIdentifier = "primary"
96 + BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
97 + BuildableName = "FWIoT-tvOS.app"
98 + BlueprintName = "FWIoT-tvOS"
99 + ReferencedContainer = "container:FWIoT.xcodeproj">
100 + </BuildableReference>
101 + </BuildableProductRunnable>
102 + <AdditionalOptions>
103 + </AdditionalOptions>
104 + </LaunchAction>
105 + <ProfileAction
106 + buildConfiguration = "Release"
107 + shouldUseLaunchSchemeArgsEnv = "YES"
108 + savedToolIdentifier = ""
109 + useCustomWorkingDirectory = "NO"
110 + debugDocumentVersioning = "YES">
111 + <BuildableProductRunnable
112 + runnableDebuggingMode = "0">
113 + <BuildableReference
114 + BuildableIdentifier = "primary"
115 + BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7"
116 + BuildableName = "FWIoT-tvOS.app"
117 + BlueprintName = "FWIoT-tvOS"
118 + ReferencedContainer = "container:FWIoT.xcodeproj">
119 + </BuildableReference>
120 + </BuildableProductRunnable>
121 + </ProfileAction>
122 + <AnalyzeAction
123 + buildConfiguration = "Debug">
124 + </AnalyzeAction>
125 + <ArchiveAction
126 + buildConfiguration = "Release"
127 + revealArchiveInOrganizer = "YES">
128 + </ArchiveAction>
129 +</Scheme>
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<Scheme
3 + LastUpgradeVersion = "0940"
4 + version = "1.3">
5 + <BuildAction
6 + parallelizeBuildables = "NO"
7 + buildImplicitDependencies = "YES">
8 + <BuildActionEntries>
9 + <BuildActionEntry
10 + buildForTesting = "YES"
11 + buildForRunning = "YES"
12 + buildForProfiling = "YES"
13 + buildForArchiving = "YES"
14 + buildForAnalyzing = "YES">
15 + <BuildableReference
16 + BuildableIdentifier = "primary"
17 + BlueprintIdentifier = "83CBBA2D1A601D0E00E9B192"
18 + BuildableName = "libReact.a"
19 + BlueprintName = "React"
20 + ReferencedContainer = "container:../node_modules/react-native/React/React.xcodeproj">
21 + </BuildableReference>
22 + </BuildActionEntry>
23 + <BuildActionEntry
24 + buildForTesting = "YES"
25 + buildForRunning = "YES"
26 + buildForProfiling = "YES"
27 + buildForArchiving = "YES"
28 + buildForAnalyzing = "YES">
29 + <BuildableReference
30 + BuildableIdentifier = "primary"
31 + BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
32 + BuildableName = "FWIoT.app"
33 + BlueprintName = "FWIoT"
34 + ReferencedContainer = "container:FWIoT.xcodeproj">
35 + </BuildableReference>
36 + </BuildActionEntry>
37 + <BuildActionEntry
38 + buildForTesting = "YES"
39 + buildForRunning = "YES"
40 + buildForProfiling = "NO"
41 + buildForArchiving = "NO"
42 + buildForAnalyzing = "YES">
43 + <BuildableReference
44 + BuildableIdentifier = "primary"
45 + BlueprintIdentifier = "00E356ED1AD99517003FC87E"
46 + BuildableName = "FWIoTTests.xctest"
47 + BlueprintName = "FWIoTTests"
48 + ReferencedContainer = "container:FWIoT.xcodeproj">
49 + </BuildableReference>
50 + </BuildActionEntry>
51 + </BuildActionEntries>
52 + </BuildAction>
53 + <TestAction
54 + buildConfiguration = "Debug"
55 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
56 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
57 + shouldUseLaunchSchemeArgsEnv = "YES">
58 + <Testables>
59 + <TestableReference
60 + skipped = "NO">
61 + <BuildableReference
62 + BuildableIdentifier = "primary"
63 + BlueprintIdentifier = "00E356ED1AD99517003FC87E"
64 + BuildableName = "FWIoTTests.xctest"
65 + BlueprintName = "FWIoTTests"
66 + ReferencedContainer = "container:FWIoT.xcodeproj">
67 + </BuildableReference>
68 + </TestableReference>
69 + </Testables>
70 + <MacroExpansion>
71 + <BuildableReference
72 + BuildableIdentifier = "primary"
73 + BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
74 + BuildableName = "FWIoT.app"
75 + BlueprintName = "FWIoT"
76 + ReferencedContainer = "container:FWIoT.xcodeproj">
77 + </BuildableReference>
78 + </MacroExpansion>
79 + <AdditionalOptions>
80 + </AdditionalOptions>
81 + </TestAction>
82 + <LaunchAction
83 + buildConfiguration = "Debug"
84 + selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
85 + selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
86 + launchStyle = "0"
87 + useCustomWorkingDirectory = "NO"
88 + ignoresPersistentStateOnLaunch = "NO"
89 + debugDocumentVersioning = "YES"
90 + debugServiceExtension = "internal"
91 + allowLocationSimulation = "YES">
92 + <BuildableProductRunnable
93 + runnableDebuggingMode = "0">
94 + <BuildableReference
95 + BuildableIdentifier = "primary"
96 + BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
97 + BuildableName = "FWIoT.app"
98 + BlueprintName = "FWIoT"
99 + ReferencedContainer = "container:FWIoT.xcodeproj">
100 + </BuildableReference>
101 + </BuildableProductRunnable>
102 + <AdditionalOptions>
103 + </AdditionalOptions>
104 + </LaunchAction>
105 + <ProfileAction
106 + buildConfiguration = "Release"
107 + shouldUseLaunchSchemeArgsEnv = "YES"
108 + savedToolIdentifier = ""
109 + useCustomWorkingDirectory = "NO"
110 + debugDocumentVersioning = "YES">
111 + <BuildableProductRunnable
112 + runnableDebuggingMode = "0">
113 + <BuildableReference
114 + BuildableIdentifier = "primary"
115 + BlueprintIdentifier = "13B07F861A680F5B00A75B9A"
116 + BuildableName = "FWIoT.app"
117 + BlueprintName = "FWIoT"
118 + ReferencedContainer = "container:FWIoT.xcodeproj">
119 + </BuildableReference>
120 + </BuildableProductRunnable>
121 + </ProfileAction>
122 + <AnalyzeAction
123 + buildConfiguration = "Debug">
124 + </AnalyzeAction>
125 + <ArchiveAction
126 + buildConfiguration = "Release"
127 + revealArchiveInOrganizer = "YES">
128 + </ArchiveAction>
129 +</Scheme>
1 +/**
2 + * Copyright (c) Facebook, Inc. and its affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + */
7 +
8 +#import <React/RCTBridgeDelegate.h>
9 +#import <UIKit/UIKit.h>
10 +
11 +@interface AppDelegate : UIResponder <UIApplicationDelegate, RCTBridgeDelegate>
12 +
13 +@property (nonatomic, strong) UIWindow *window;
14 +
15 +@end
1 +/**
2 + * Copyright (c) Facebook, Inc. and its affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + */
7 +
8 +#import "AppDelegate.h"
9 +
10 +#import <React/RCTBridge.h>
11 +#import <React/RCTBundleURLProvider.h>
12 +#import <React/RCTRootView.h>
13 +
14 +@implementation AppDelegate
15 +
16 +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
17 +{
18 + RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
19 + RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
20 + moduleName:@"FWIoT"
21 + initialProperties:nil];
22 +
23 + rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
24 +
25 + self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
26 + UIViewController *rootViewController = [UIViewController new];
27 + rootViewController.view = rootView;
28 + self.window.rootViewController = rootViewController;
29 + [self.window makeKeyAndVisible];
30 + return YES;
31 +}
32 +
33 +- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
34 +{
35 +#if DEBUG
36 + return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
37 +#else
38 + return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
39 +#endif
40 +}
41 +
42 +@end
1 +<?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 +<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7702" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
3 + <dependencies>
4 + <deployment identifier="iOS"/>
5 + <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7701"/>
6 + <capability name="Constraints with non-1.0 multipliers" minToolsVersion="5.1"/>
7 + </dependencies>
8 + <objects>
9 + <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
10 + <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
11 + <view contentMode="scaleToFill" id="iN0-l3-epB">
12 + <rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
13 + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
14 + <subviews>
15 + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="Powered by React Native" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
16 + <rect key="frame" x="20" y="439" width="441" height="21"/>
17 + <fontDescription key="fontDescription" type="system" pointSize="17"/>
18 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
19 + <nil key="highlightedColor"/>
20 + </label>
21 + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="FWIoT" textAlignment="center" lineBreakMode="middleTruncation" baselineAdjustment="alignBaselines" minimumFontSize="18" translatesAutoresizingMaskIntoConstraints="NO" id="kId-c2-rCX">
22 + <rect key="frame" x="20" y="140" width="441" height="43"/>
23 + <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/>
24 + <color key="textColor" cocoaTouchSystemColor="darkTextColor"/>
25 + <nil key="highlightedColor"/>
26 + </label>
27 + </subviews>
28 + <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
29 + <constraints>
30 + <constraint firstItem="kId-c2-rCX" firstAttribute="centerY" secondItem="iN0-l3-epB" secondAttribute="bottom" multiplier="1/3" constant="1" id="5cJ-9S-tgC"/>
31 + <constraint firstAttribute="centerX" secondItem="kId-c2-rCX" secondAttribute="centerX" id="Koa-jz-hwk"/>
32 + <constraint firstAttribute="bottom" secondItem="8ie-xW-0ye" secondAttribute="bottom" constant="20" id="Kzo-t9-V3l"/>
33 + <constraint firstItem="8ie-xW-0ye" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="MfP-vx-nX0"/>
34 + <constraint firstAttribute="centerX" secondItem="8ie-xW-0ye" secondAttribute="centerX" id="ZEH-qu-HZ9"/>
35 + <constraint firstItem="kId-c2-rCX" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" constant="20" symbolic="YES" id="fvb-Df-36g"/>
36 + </constraints>
37 + <nil key="simulatedStatusBarMetrics"/>
38 + <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
39 + <point key="canvasLocation" x="548" y="455"/>
40 + </view>
41 + </objects>
42 +</document>
1 +{
2 + "images" : [
3 + {
4 + "idiom" : "iphone",
5 + "size" : "29x29",
6 + "scale" : "2x"
7 + },
8 + {
9 + "idiom" : "iphone",
10 + "size" : "29x29",
11 + "scale" : "3x"
12 + },
13 + {
14 + "idiom" : "iphone",
15 + "size" : "40x40",
16 + "scale" : "2x"
17 + },
18 + {
19 + "idiom" : "iphone",
20 + "size" : "40x40",
21 + "scale" : "3x"
22 + },
23 + {
24 + "idiom" : "iphone",
25 + "size" : "60x60",
26 + "scale" : "2x"
27 + },
28 + {
29 + "idiom" : "iphone",
30 + "size" : "60x60",
31 + "scale" : "3x"
32 + }
33 + ],
34 + "info" : {
35 + "version" : 1,
36 + "author" : "xcode"
37 + }
38 +}
...\ No newline at end of file ...\ No newline at end of file
1 +{
2 + "info" : {
3 + "version" : 1,
4 + "author" : "xcode"
5 + }
6 +}
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3 +<plist version="1.0">
4 +<dict>
5 + <key>CFBundleDevelopmentRegion</key>
6 + <string>en</string>
7 + <key>CFBundleDisplayName</key>
8 + <string>FWIoT</string>
9 + <key>CFBundleExecutable</key>
10 + <string>$(EXECUTABLE_NAME)</string>
11 + <key>CFBundleIdentifier</key>
12 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
13 + <key>CFBundleInfoDictionaryVersion</key>
14 + <string>6.0</string>
15 + <key>CFBundleName</key>
16 + <string>$(PRODUCT_NAME)</string>
17 + <key>CFBundlePackageType</key>
18 + <string>APPL</string>
19 + <key>CFBundleShortVersionString</key>
20 + <string>1.0</string>
21 + <key>CFBundleSignature</key>
22 + <string>????</string>
23 + <key>CFBundleVersion</key>
24 + <string>1</string>
25 + <key>LSRequiresIPhoneOS</key>
26 + <true/>
27 + <key>NSAppTransportSecurity</key>
28 + <dict>
29 + <key>NSAllowsArbitraryLoads</key>
30 + <true/>
31 + <key>NSExceptionDomains</key>
32 + <dict>
33 + <key>localhost</key>
34 + <dict>
35 + <key>NSExceptionAllowsInsecureHTTPLoads</key>
36 + <true/>
37 + </dict>
38 + </dict>
39 + </dict>
40 + <key>NSLocationWhenInUseUsageDescription</key>
41 + <string/>
42 + <key>UILaunchStoryboardName</key>
43 + <string>LaunchScreen</string>
44 + <key>UIRequiredDeviceCapabilities</key>
45 + <array>
46 + <string>armv7</string>
47 + </array>
48 + <key>UISupportedInterfaceOrientations</key>
49 + <array>
50 + <string>UIInterfaceOrientationPortrait</string>
51 + <string>UIInterfaceOrientationLandscapeLeft</string>
52 + <string>UIInterfaceOrientationLandscapeRight</string>
53 + </array>
54 + <key>UIViewControllerBasedStatusBarAppearance</key>
55 + <false/>
56 + <key>UIAppFonts</key>
57 + <array>
58 + <string>BMJUA_ttf.ttf</string>
59 + </array>
60 +</dict>
61 +</plist>
1 +/**
2 + * Copyright (c) Facebook, Inc. and its affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + */
7 +
8 +#import <UIKit/UIKit.h>
9 +
10 +#import "AppDelegate.h"
11 +
12 +int main(int argc, char * argv[]) {
13 + @autoreleasepool {
14 + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
15 + }
16 +}
1 +/**
2 + * Copyright (c) Facebook, Inc. and its affiliates.
3 + *
4 + * This source code is licensed under the MIT license found in the
5 + * LICENSE file in the root directory of this source tree.
6 + */
7 +
8 +#import <UIKit/UIKit.h>
9 +#import <XCTest/XCTest.h>
10 +
11 +#import <React/RCTLog.h>
12 +#import <React/RCTRootView.h>
13 +
14 +#define TIMEOUT_SECONDS 600
15 +#define TEXT_TO_LOOK_FOR @"Welcome to React"
16 +
17 +@interface FWIoTTests : XCTestCase
18 +
19 +@end
20 +
21 +@implementation FWIoTTests
22 +
23 +- (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test
24 +{
25 + if (test(view)) {
26 + return YES;
27 + }
28 + for (UIView *subview in [view subviews]) {
29 + if ([self findSubviewInView:subview matching:test]) {
30 + return YES;
31 + }
32 + }
33 + return NO;
34 +}
35 +
36 +- (void)testRendersWelcomeScreen
37 +{
38 + UIViewController *vc = [[[RCTSharedApplication() delegate] window] rootViewController];
39 + NSDate *date = [NSDate dateWithTimeIntervalSinceNow:TIMEOUT_SECONDS];
40 + BOOL foundElement = NO;
41 +
42 + __block NSString *redboxError = nil;
43 +#ifdef DEBUG
44 + RCTSetLogFunction(^(RCTLogLevel level, RCTLogSource source, NSString *fileName, NSNumber *lineNumber, NSString *message) {
45 + if (level >= RCTLogLevelError) {
46 + redboxError = message;
47 + }
48 + });
49 +#endif
50 +
51 + while ([date timeIntervalSinceNow] > 0 && !foundElement && !redboxError) {
52 + [[NSRunLoop mainRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
53 + [[NSRunLoop mainRunLoop] runMode:NSRunLoopCommonModes beforeDate:[NSDate dateWithTimeIntervalSinceNow:0.1]];
54 +
55 + foundElement = [self findSubviewInView:vc.view matching:^BOOL(UIView *view) {
56 + if ([view.accessibilityLabel isEqualToString:TEXT_TO_LOOK_FOR]) {
57 + return YES;
58 + }
59 + return NO;
60 + }];
61 + }
62 +
63 +#ifdef DEBUG
64 + RCTSetLogFunction(RCTDefaultLogFunction);
65 +#endif
66 +
67 + XCTAssertNil(redboxError, @"RedBox error: %@", redboxError);
68 + XCTAssertTrue(foundElement, @"Couldn't find element with text '%@' in %d seconds", TEXT_TO_LOOK_FOR, TIMEOUT_SECONDS);
69 +}
70 +
71 +
72 +@end
1 +<?xml version="1.0" encoding="UTF-8"?>
2 +<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3 +<plist version="1.0">
4 +<dict>
5 + <key>CFBundleDevelopmentRegion</key>
6 + <string>en</string>
7 + <key>CFBundleExecutable</key>
8 + <string>$(EXECUTABLE_NAME)</string>
9 + <key>CFBundleIdentifier</key>
10 + <string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
11 + <key>CFBundleInfoDictionaryVersion</key>
12 + <string>6.0</string>
13 + <key>CFBundleName</key>
14 + <string>$(PRODUCT_NAME)</string>
15 + <key>CFBundlePackageType</key>
16 + <string>BNDL</string>
17 + <key>CFBundleShortVersionString</key>
18 + <string>1.0</string>
19 + <key>CFBundleSignature</key>
20 + <string>????</string>
21 + <key>CFBundleVersion</key>
22 + <string>1</string>
23 +</dict>
24 +</plist>
1 +platform :ios, '9.0'
2 +require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
3 +
4 +target 'FWIoT' do
5 + # Pods for FWIoT
6 + pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
7 + pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
8 + pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
9 + pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
10 + pod 'React', :path => '../node_modules/react-native/'
11 + pod 'React-Core', :path => '../node_modules/react-native/'
12 + pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
13 + pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
14 + pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
15 + pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
16 + pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
17 + pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
18 + pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
19 + pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
20 + pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
21 + pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
22 + pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
23 + pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'
24 +
25 + pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
26 + pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
27 + pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
28 + pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
29 + pod 'ReactCommon/jscallinvoker', :path => "../node_modules/react-native/ReactCommon"
30 + pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
31 + pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
32 +
33 + pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
34 + pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
35 + pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
36 +
37 + target 'FWIoTTests' do
38 + inherit! :search_paths
39 + # Pods for testing
40 + end
41 +
42 + use_native_modules!
43 +end
44 +
45 +target 'FWIoT-tvOS' do
46 + # Pods for FWIoT-tvOS
47 +
48 + target 'FWIoT-tvOSTests' do
49 + inherit! :search_paths
50 + # Pods for testing
51 + end
52 +
53 +end
1 +/**
2 + * Metro configuration for React Native
3 + * https://github.com/facebook/react-native
4 + *
5 + * @format
6 + */
7 +
8 +module.exports = {
9 + transformer: {
10 + getTransformOptions: async () => ({
11 + transform: {
12 + experimentalImportSupport: false,
13 + inlineRequires: false,
14 + },
15 + }),
16 + },
17 +};
This diff could not be displayed because it is too large.
1 +{
2 + "name": "FWIoT",
3 + "version": "0.0.1",
4 + "private": true,
5 + "scripts": {
6 + "android": "react-native run-android",
7 + "ios": "react-native run-ios",
8 + "start": "react-native start",
9 + "test": "jest",
10 + "lint": "eslint ."
11 + },
12 + "dependencies": {
13 + "react": "16.9.0",
14 + "react-native": "0.61.5",
15 + "react-native-gesture-handler": "^1.5.2",
16 + "react-native-push-notification": "^3.1.9",
17 + "react-navigation": "^4.0.10",
18 + "react-navigation-stack": "^1.10.3"
19 + },
20 + "devDependencies": {
21 + "@babel/core": "^7.6.2",
22 + "@babel/runtime": "^7.6.2",
23 + "@react-native-community/eslint-config": "^0.0.5",
24 + "babel-jest": "^24.9.0",
25 + "eslint": "^6.5.1",
26 + "jest": "^24.9.0",
27 + "metro-react-native-babel-preset": "^0.56.0",
28 + "react-test-renderer": "16.9.0"
29 + },
30 + "jest": {
31 + "preset": "react-native"
32 + }
33 +}
1 +var fs = require('fs');
2 +var readline = require('readline');
3 +var google = require('googleapis');
4 +var googleAuth = require('google-auth-library');
5 +
6 +var SCOPES = [
7 + 'https://www.googleapis.com/auth/calendar.readonly', // 캘린더 정보의 읽기 권한? 입니다.
8 + 'https://www.googleapis.com/auth/calendar' // 캘린더 정보의 편집 권한? 입니다.
9 + ];
10 +
11 +var TOKEN_DIR = (process.env.HOME || process.env.HOMEPATH ||
12 + process.env.USERPROFILE) + '/.credentials/';
13 +// 토큰이 저장될 디렉토리
14 +var TOKEN_PATH = TOKEN_DIR + 'calendar-nodejs-quickstart.json';
15 +// 토큰 파일 명
16 +
17 +fs.readFile('client_secret.json', function processClientSecrets(err, content) {
18 + // 로컬의 client_secret.json 파일을 읽고 'authorize' 함수 실행
19 + if (err) {
20 + console.log('Error loading client secret file: ' + err);
21 + return;
22 + }
23 + authorize(JSON.parse(content), listEvents);
24 +});
25 +
26 +function authorize(credentials, callback) {
27 + var clientSecret = credentials.web.client_secret;
28 + var clientId = credentials.web.client_id;
29 + var redirectUrl = credentials.web.auth_provider_x509_cert_url;
30 + // client_secret.json 파일에서 시크릿키, 클라이언트 아이디, 리다이렉트 URI를 받습니다.
31 + // 웹 어플리케이션으로 만들었을 때에는 'installed' -> 'web' 으로 수정합니다.
32 + // ex 'var clientSecret = credentials.web.client_secret;'
33 +
34 + var auth = new googleAuth();
35 + var oauth2Client = new auth.OAuth2(clientId, clientSecret, redirectUrl);
36 +
37 + fs.readFile(TOKEN_PATH, function(err, token) {
38 + // 앞서 지정한 디렉토리와 파일명으로 토큰 파일을 읽습니다.
39 + if (err) {
40 + getNewToken(oauth2Client, callback); // 토큰이 없다면 만듭니다.
41 + } else {
42 + oauth2Client.credentials = JSON.parse(token); // 토큰이 있다면 정보를 객체에 담습니다.
43 + callback(oauth2Client);
44 + }
45 + });
46 +}
47 +
48 +function getNewToken(oauth2Client, callback) {
49 + var authUrl = oauth2Client.generateAuthUrl({
50 + access_type: 'offline',
51 + scope: SCOPES
52 + });
53 +
54 + // 브라우저에 'authUrl'의 링크로 접근하여 데이터 접근에 동의한 후 리다이렉트 되는 URL의
55 + // 'code=' 다음 부분을 복사합니다.
56 + console.log('Authorize this app by visiting this url: ', authUrl);
57 + var rl = readline.createInterface({
58 + input: process.stdin,
59 + output: process.stdout
60 + });
61 + // 복사한 'code=' 다음 부분을 입력합니다.
62 + // 로컬에서 테스트 할때에는 code= 다음 부분의 값이 URL 인코딩이 되어 있을 수 있으니
63 + // URL 디코딩한 후에 입력합니다.
64 + rl.question('Enter the code from that page here: ', function(code) {
65 + rl.close();
66 + oauth2Client.getToken(code, function(err, token) {
67 + if (err) {
68 + console.log('Error while trying to retrieve access token', err);
69 + return;
70 + }
71 + oauth2Client.credentials = token;
72 + storeToken(token);
73 + callback(oauth2Client);
74 + });
75 + });
76 +}
77 +
78 +function storeToken(token) {
79 + try {
80 + fs.mkdirSync(TOKEN_DIR);
81 + } catch (err) {
82 + if (err.code != 'EEXIST') {
83 + throw err;
84 + }
85 + }
86 + fs.writeFile(TOKEN_PATH, JSON.stringify(token)); // 토큰을 만듭니다.
87 + console.log('Token stored to ' + TOKEN_PATH);
88 +}
89 +
90 +function listEvents(auth) {
91 + // 토큰 인증이 완료되면 최종적으로 실행되는 함수 입니다.
92 + // 아래의 예제는 구글 캘린더에 등록된 이벤트 10개의 정보를 출력합니다.
93 + var calendar = google.calendar('v3');
94 +
95 + calendar.events.list({
96 + auth: auth,
97 + calendarId: 'primary', // 이곳에 이벤트를 가져올 캘린더 id를 입력해야 합니다.
98 + timeMin: (new Date()).toISOString(),
99 + maxResults: 10,
100 + singleEvents: true,
101 + orderBy: 'startTime'
102 + }, function(err, response) {
103 + if (err) {
104 + console.log('The API returned an error: ' + err);
105 + return;
106 + }
107 + var events = response.items;
108 + if (events.length == 0) {
109 + console.log('No upcoming events found.');
110 + } else {
111 + console.log('Upcoming 10 events:');
112 + for (var i = 0; i < events.length; i++) {
113 + var event = events[i];
114 + var start = event.start.dateTime || event.start.date;
115 + console.log('%s - %s', start, event.summary);
116 + }
117 + }
118 + });
119 +
120 +
121 + // 다음은 구글 캘린더에 'CHEOLGUSO' 라는 이름의 캘린더가 있는지 확인하여
122 + // 없다면 만들고 있다면 삭제해보겠습니다.
123 + calendar.calendarList.list({
124 + auth : auth
125 + }, function(err, calendarList){
126 + if(err) console.log(err);
127 +
128 + var deleteCalendarId; // 캘린더 삭제를 위한 아이디 변수
129 + var isCGSCalendar = false; // 'CHEOLGUSO' 캘린더가 존재하는지 확인하기 위한 변수
130 +
131 + // 'CHEOLGUSO' 캘린더가 있는지 확인
132 + for(var i=0; i<calendarList.items.length; i++){
133 + if(calendarList.items[i].summary === 'CHEOLGUSO'){
134 + isCGSCalendar = true;
135 + deleteCalendarId = calendarList.items[i].id;
136 + }
137 + }
138 +
139 + if(isCGSCalendar){
140 +
141 + // 'CHEOLGUSO' 캘린더가 있다면 캘린더를 지움
142 + calendar.calendars.delete({
143 + auth : auth,
144 + calendarId : deleteCalendarId
145 + }, function(err, calendars){
146 + if(err) console.log(err);
147 + });
148 +
149 + }else{
150 +
151 + // 'CHEOLGUSO' 캘린더가 없다면 캘린더를 만듬
152 + calendar.calendars.insert({
153 + auth : auth,
154 + resource : {
155 + summary : 'CHEOLGUSO'
156 + }
157 + }, function(err, calendars){
158 + if(err) console.log(err);
159 + });
160 +
161 + }
162 +
163 + });
164 +
165 +
166 +}
...\ No newline at end of file ...\ No newline at end of file
1 +import React, { Component } from 'react';
2 +import { StyleSheet, Text, View, TextInput, Image, } from 'react-native';
3 +import LoginButton from './component/LoginButton';
4 +
5 +export default class Login extends Component {
6 +
7 + constructor(props) {
8 + super(props);
9 + this.state = {
10 + ID: '',
11 + };
12 + }
13 + static navigationOptions = {
14 + title: 'Login',
15 + };
16 +
17 + render() {
18 + return (
19 + <View style={styles.container}>
20 + <View style={styles.header}>
21 + <Text
22 + style={{textAlign : 'center', fontSize : 50, fontFamily : "BMJUA_ttf", marginTop:50}}>FW IoT</Text>
23 + </View>
24 + <View style={styles.logo}>
25 + <Image
26 + style = {styles.img}
27 + source={require('./assets/logo.png')}/>
28 + </View>
29 + <View style={styles.input_div}>
30 + <View
31 + style={StyleSheet.inputPart}>
32 + <Text
33 + style={{textAlign:'center',fontSize : 40, marginTop :20, fontFamily : "BMJUA_ttf"}}>Food Waste IoT</Text>
34 + <Text
35 + style={{textAlign:'center',fontSize : 15, marginTop :20, fontFamily : "BMJUA_ttf"}}>기기 등록</Text>
36 + <TextInput
37 + style={styles.input}
38 + placeholder="ID"
39 + placeholderTextColor="#66b3ff"
40 + value={this.state.text}
41 + onChangeText={(text) => this.setState({ ID: text })}
42 + />
43 + <LoginButton
44 + onPress={() => { this.props.navigation.navigate('MainScreen', { ID: this.state.ID }) }}
45 + />
46 + </View>
47 + </View>
48 + <View style={styles.footer}>
49 +
50 + </View>
51 + </View>
52 + );
53 + }
54 +}
55 +
56 +const styles = StyleSheet.create({
57 + input: {
58 + height: 50,
59 + width: 250,
60 + fontSize: 20,
61 + alignSelf: 'center',
62 + borderColor: "#0066cc",
63 + borderWidth: 1,
64 + backgroundColor:"white",
65 + borderRadius: 10,
66 + marginTop : 20,
67 + },
68 + input_title: {
69 + textAlign:'center',
70 + fontSize : 40,
71 + marginTop :20,
72 + },
73 + container: {
74 + flex: 1,
75 + backgroundColor: 'white',
76 + },
77 + header: {
78 + flex: 2,
79 + backgroundColor: 'white',
80 + },
81 + logo: {
82 + flex: 4,
83 + justifyContent: "center",
84 + alignItems: "center",
85 + },
86 + input_div :{
87 + flex: 4,
88 + backgroundColor: '#0149ff',
89 + borderRadius : 20,
90 + margin:20,
91 +
92 + },
93 + footer:{
94 + flex : 1,
95 + },
96 + img:{
97 + width:200,
98 + resizeMode: 'contain',
99 + alignSelf :'center',
100 + marginStart : 30,
101 + },
102 +});
1 +import React, { Component, Notifications } from 'react';
2 +import { StyleSheet, Text, View, TextInput, Image, } from 'react-native';
3 +
4 +export default class Login extends Component {
5 +
6 + constructor(props) {
7 + super(props);
8 + this.state = {
9 + ID: this.props.navigation.getParam('ID'),
10 + };
11 + }
12 + static navigationOptions = {
13 + title: 'MainScreen',
14 + };
15 +
16 + render() {
17 + return (
18 + <View style={styles.container}>
19 + <View style={styles.header}>
20 + <Text>{this.state.ID}</Text>
21 + </View>
22 + </View>
23 + );
24 + }
25 +}
26 +
27 +var PushNotification = require('react-native-push-notification');
28 +
29 +PushNotification.configure({
30 +
31 + // (optional) Called when Token is generated (iOS and Android)
32 + onRegister: function(token) {
33 + console.log( 'TOKEN:', token );
34 + },
35 +
36 + // (required) Called when a remote or local notification is opened or received
37 + onNotification: function(notification) {
38 + console.log( 'NOTIFICATION:', notification );
39 + },
40 +
41 + // ANDROID ONLY: GCM Sender ID (optional - not required for local notifications, but is need to receive remote push notifications)
42 + senderID: "YOUR GCM SENDER ID",
43 +
44 + // IOS ONLY (optional): default: all - Permissions to register.
45 + permissions: {
46 + alert: true,
47 + badge: true,
48 + sound: true
49 + },
50 +
51 + // Should the initial notification be popped automatically
52 + // default: true
53 + popInitialNotification: true,
54 +
55 + /**
56 + * (optional) default: true
57 + * - Specified if permissions (ios) and token (android and ios) will requested or not,
58 + * - if not, you must call PushNotificationsHandler.requestPermissions() later
59 + */
60 + requestPermissions: true,
61 +});
62 +
63 +const styles = StyleSheet.create({
64 + input: {
65 + height: 50,
66 + width: 250,
67 + fontSize: 0,
68 + alignSelf: 'center',
69 + borderRadius: 1,
70 + borderStyle: 'dotted',
71 + borderBottomColor: "#0066cc",
72 + borderBottomWidth: 2,
73 + },
74 + container: {
75 + flex: 1,
76 + backgroundColor: 'white',
77 + },
78 + header: {
79 + flex: 2,
80 + backgroundColor: 'white',
81 + },
82 + logo: {
83 + flex: 4,
84 + backgroundColor: 'white',
85 + },
86 + inputPart: {
87 + flex: 4,
88 + backgroundColor: 'white',
89 + },
90 +});
1 +import React, { Component } from 'react';
2 +import {
3 + TouchableOpacity,
4 + Text,
5 + StyleSheet,
6 +} from 'react-native';
7 +
8 +export default class LoginButton extends Component {
9 + constructor(props) {
10 + super(props);
11 + }
12 +
13 + static defaultProps = {
14 + onPress: () => null,
15 + }
16 +
17 + render() {
18 + return (
19 + <TouchableOpacity
20 + style={styles.button}
21 + onPress={this.props.onPress}
22 + >
23 + <Text style={styles.title}>Login</Text>
24 + </TouchableOpacity>
25 + )
26 + }
27 +}
28 +
29 +const styles = StyleSheet.create({
30 + button: {
31 + alignSelf: 'center',
32 + padding: 10,
33 + backgroundColor: "#0066cc",
34 + width: 80,
35 + height: 40,
36 + marginTop: 10,
37 + borderRadius : 20
38 +
39 + },
40 + title: {
41 + fontSize: 15,
42 + color: 'white',
43 + textAlign: 'center',
44 + textAlignVertical : 'center',
45 + },
46 +});
...\ No newline at end of file ...\ No newline at end of file