Showing
42 changed files
with
354 additions
and
386 deletions
| 1 | -import React, {Component} from 'react' | 1 | +import React, { Component } from 'react'; |
| 2 | +import { StyleSheet, Text, View } from 'react-native'; | ||
| 2 | import { createAppContainer } from 'react-navigation'; | 3 | import { createAppContainer } from 'react-navigation'; |
| 3 | -import { createStackNavigator } from 'react-navigation-stack'; | 4 | +import { createStackNavigator } from 'react-navigation-stack' |
| 5 | +// import MainScreen from './components/MainScreen'; | ||
| 4 | import Login from './source/Login'; | 6 | import Login from './source/Login'; |
| 5 | import MainScreen from './source/MainScreen'; | 7 | import MainScreen from './source/MainScreen'; |
| 6 | 8 | ||
| 9 | +// const AppStackNavigator = createStackNavigator({ | ||
| 10 | +// Main:{ | ||
| 11 | +// screen: MainScreen // MainScreen 컴포넌트를 네비게이터에 등록 | ||
| 12 | +// } | ||
| 13 | +// }); | ||
| 14 | + | ||
| 15 | +// export default createAppContainer(AppStackNavigator); | ||
| 16 | + | ||
| 7 | const MainNavigator = createStackNavigator({ | 17 | const MainNavigator = createStackNavigator({ |
| 8 | Login : {screen: Login}, | 18 | Login : {screen: Login}, |
| 9 | MainScreen : {screen:MainScreen}, | 19 | MainScreen : {screen:MainScreen}, |
| ... | @@ -13,4 +23,4 @@ const MainNavigator = createStackNavigator({ | ... | @@ -13,4 +23,4 @@ const MainNavigator = createStackNavigator({ |
| 13 | 23 | ||
| 14 | const App = createAppContainer(MainNavigator); | 24 | const App = createAppContainer(MainNavigator); |
| 15 | 25 | ||
| 16 | -export default App; | ||
| ... | \ No newline at end of file | ... | \ No newline at end of file |
| 26 | +export default App; | ... | ... |
| ... | @@ -35,12 +35,12 @@ android_library( | ... | @@ -35,12 +35,12 @@ android_library( |
| 35 | 35 | ||
| 36 | android_build_config( | 36 | android_build_config( |
| 37 | name = "build_config", | 37 | name = "build_config", |
| 38 | - package = "com.fwiot", | 38 | + package = "com.testproject", |
| 39 | ) | 39 | ) |
| 40 | 40 | ||
| 41 | android_resource( | 41 | android_resource( |
| 42 | name = "res", | 42 | name = "res", |
| 43 | - package = "com.fwiot", | 43 | + package = "com.testproject", |
| 44 | res = "src/main/res", | 44 | res = "src/main/res", |
| 45 | ) | 45 | ) |
| 46 | 46 | ... | ... |
| ... | @@ -128,7 +128,7 @@ android { | ... | @@ -128,7 +128,7 @@ android { |
| 128 | } | 128 | } |
| 129 | 129 | ||
| 130 | defaultConfig { | 130 | defaultConfig { |
| 131 | - applicationId "com.fwiot" | 131 | + applicationId "com.testproject" |
| 132 | minSdkVersion rootProject.ext.minSdkVersion | 132 | minSdkVersion rootProject.ext.minSdkVersion |
| 133 | targetSdkVersion rootProject.ext.targetSdkVersion | 133 | targetSdkVersion rootProject.ext.targetSdkVersion |
| 134 | versionCode 1 | 134 | versionCode 1 |
| ... | @@ -189,11 +189,6 @@ dependencies { | ... | @@ -189,11 +189,6 @@ dependencies { |
| 189 | } else { | 189 | } else { |
| 190 | implementation jscFlavor | 190 | implementation jscFlavor |
| 191 | } | 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 | } | 192 | } |
| 198 | 193 | ||
| 199 | // Run this once to be able to run the application with BUCK | 194 | // Run this once to be able to run the application with BUCK | ... | ... |
| 1 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | 1 | <manifest xmlns:android="http://schemas.android.com/apk/res/android" |
| 2 | - package="com.fwiot"> | 2 | + package="com.testproject"> |
| 3 | 3 | ||
| 4 | <uses-permission android:name="android.permission.INTERNET" /> | 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 | 5 | ||
| 13 | <application | 6 | <application |
| 14 | android:name=".MainApplication" | 7 | android:name=".MainApplication" |
| ... | @@ -17,32 +10,6 @@ | ... | @@ -17,32 +10,6 @@ |
| 17 | android:roundIcon="@mipmap/ic_launcher_round" | 10 | android:roundIcon="@mipmap/ic_launcher_round" |
| 18 | android:allowBackup="false" | 11 | android:allowBackup="false" |
| 19 | android:theme="@style/AppTheme"> | 12 | 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 | 13 | <activity |
| 47 | android:name=".MainActivity" | 14 | android:name=".MainActivity" |
| 48 | android:label="@string/app_name" | 15 | android:label="@string/app_name" |
| ... | @@ -54,9 +21,6 @@ | ... | @@ -54,9 +21,6 @@ |
| 54 | </intent-filter> | 21 | </intent-filter> |
| 55 | </activity> | 22 | </activity> |
| 56 | <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> | 23 | <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> |
| 57 | - | ||
| 58 | </application> | 24 | </application> |
| 59 | 25 | ||
| 60 | - | ||
| 61 | - | ||
| 62 | </manifest> | 26 | </manifest> | ... | ... |
No preview for this file type
| 1 | -package com.fwiot; | 1 | +package com.testproject; |
| 2 | 2 | ||
| 3 | import com.facebook.react.ReactActivity; | 3 | import com.facebook.react.ReactActivity; |
| 4 | -import com.dieam.reactnativepushnotification.ReactNativePushNotificationPackage; | ||
| 5 | 4 | ||
| 6 | -public class MainActivity extends ReactActivity implements ReactApplication { | 5 | +public class MainActivity extends ReactActivity { |
| 7 | 6 | ||
| 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 | /** | 7 | /** |
| 24 | * Returns the name of the main component registered from JavaScript. This is used to schedule | 8 | * Returns the name of the main component registered from JavaScript. This is used to schedule |
| 25 | * rendering of the component. | 9 | * rendering of the component. |
| 26 | */ | 10 | */ |
| 27 | @Override | 11 | @Override |
| 28 | protected String getMainComponentName() { | 12 | protected String getMainComponentName() { |
| 29 | - return "FWIoT"; | 13 | + return "TestProject"; |
| 30 | } | 14 | } |
| 31 | } | 15 | } | ... | ... |
| 1 | -rootProject.name = 'FWIoT' | 1 | +rootProject.name = 'TestProject' |
| 2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) | 2 | apply from: file("../node_modules/@react-native-community/cli-platform-android/native_modules.gradle"); applyNativeModulesSettingsGradle(settings) |
| 3 | include ':app' | 3 | include ':app' |
| 4 | -include ':react-native-push-notification' | ||
| 5 | -project(':react-native-push-notification').projectDir = file('../node_modules/react-native-push-notification/android') | ... | ... |
assets/fonts/BMJUA_ttf.ttf
deleted
100644 → 0
No preview for this file type
client_secret.json
deleted
100644 → 0
| 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 |
components/AppTabNavigator/HistoryTab.js
0 → 100644
| 1 | +import React, { Component } from 'react'; | ||
| 2 | +import { View, Text, StyleSheet } from 'react-native'; | ||
| 3 | + | ||
| 4 | +export default class HomeTab extends Component { | ||
| 5 | + render() { | ||
| 6 | + return ( | ||
| 7 | + <View style={style.container}> | ||
| 8 | + <Text>HistoryTab</Text> | ||
| 9 | + </View> | ||
| 10 | + ); | ||
| 11 | + } | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +const style = StyleSheet.create({ | ||
| 15 | + container: { | ||
| 16 | + flex: 1, | ||
| 17 | + alignItems: 'center', | ||
| 18 | + justifyContent: 'center', | ||
| 19 | + } | ||
| 20 | +}); |
components/AppTabNavigator/HomeTab.js
0 → 100644
| 1 | +import React, { Component } from 'react'; | ||
| 2 | +import { View, Text, StyleSheet } from 'react-native'; | ||
| 3 | +import WasteDetail from '../WasteDetail' | ||
| 4 | + | ||
| 5 | +export default class HomeTab extends Component { | ||
| 6 | + render() { | ||
| 7 | + return ( | ||
| 8 | + <View style={style.container}> | ||
| 9 | + <Text>HomeTab</Text> | ||
| 10 | + <WasteDetail></WasteDetail> | ||
| 11 | + </View> | ||
| 12 | + ); | ||
| 13 | + } | ||
| 14 | +} | ||
| 15 | + | ||
| 16 | +const style = StyleSheet.create({ | ||
| 17 | + container: { | ||
| 18 | + flex: 1, | ||
| 19 | + } | ||
| 20 | +}); |
components/AppTabNavigator/SettingTab.js
0 → 100644
| 1 | +import React, { Component } from 'react'; | ||
| 2 | +import { View, Text, StyleSheet } from 'react-native'; | ||
| 3 | + | ||
| 4 | +export default class HomeTab extends Component { | ||
| 5 | + render() { | ||
| 6 | + return ( | ||
| 7 | + <View style={style.container}> | ||
| 8 | + <Text>SettingTab</Text> | ||
| 9 | + </View> | ||
| 10 | + ); | ||
| 11 | + } | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +const style = StyleSheet.create({ | ||
| 15 | + container: { | ||
| 16 | + flex: 1, | ||
| 17 | + alignItems: 'center', | ||
| 18 | + justifyContent: 'center', | ||
| 19 | + } | ||
| 20 | +}); |
components/MainScreen.js
0 → 100644
| 1 | +import React, { Component } from 'react'; | ||
| 2 | +import { StyleSheet, Platform, View, Text } from 'react-native'; | ||
| 3 | +import { createAppContainer } from 'react-navigation'; | ||
| 4 | +import { createMaterialTopTabNavigator } from 'react-navigation-tabs' | ||
| 5 | +import HomeTab from './AppTabNavigator/HomeTab' | ||
| 6 | +import HistoryTab from './AppTabNavigator/HistoryTab' | ||
| 7 | +import SettingTab from './AppTabNavigator/SettingTab' | ||
| 8 | + | ||
| 9 | +// 하단 탭 네비게이터 생성 | ||
| 10 | +const AppTabNavigator = createMaterialTopTabNavigator({ | ||
| 11 | + Home: { screen: HomeTab }, | ||
| 12 | + History: { screen: HistoryTab }, | ||
| 13 | + Setting: { screen: SettingTab } | ||
| 14 | +},{ | ||
| 15 | + animationEnabled: true, | ||
| 16 | + swipeEnabled: true, | ||
| 17 | + tabBarPosition: "bottom", | ||
| 18 | + tabBarOptions: { | ||
| 19 | + style: { | ||
| 20 | + ...Platform.select({ | ||
| 21 | + android:{ | ||
| 22 | + backgroundColor:'white', | ||
| 23 | + } | ||
| 24 | + }) | ||
| 25 | + }, | ||
| 26 | + iconStyle: { height: 10 }, | ||
| 27 | + activeTintColor: '#000', | ||
| 28 | + inactiveTintColor: '#d1cece', | ||
| 29 | + upperCaseLabel: true, | ||
| 30 | + showLabel: true, | ||
| 31 | + showIcon: true, | ||
| 32 | + } | ||
| 33 | +}); | ||
| 34 | + | ||
| 35 | +const AppTabContainet = createAppContainer(AppTabNavigator); | ||
| 36 | + | ||
| 37 | +export default class MainScreen extends Component { | ||
| 38 | + | ||
| 39 | + static navigationOptions = { | ||
| 40 | + title: 'FW IOT' } | ||
| 41 | + | ||
| 42 | + render() { | ||
| 43 | + return <AppTabContainet/>; // AppTabContainet 컴포넌트를 리턴한다. | ||
| 44 | + } | ||
| 45 | +} | ||
| 46 | + | ||
| 47 | +const styles = StyleSheet.create({ | ||
| 48 | + container: { | ||
| 49 | + flex: 1, | ||
| 50 | + alignItems: 'center', | ||
| 51 | + justifyContent: 'center', | ||
| 52 | + }, | ||
| 53 | +}); |
components/WasteDetail.js
0 → 100644
| 1 | +import React, { Component } from 'react'; | ||
| 2 | +import { View, Text, StyleSheet } from 'react-native'; | ||
| 3 | + | ||
| 4 | +export default class HomeTab extends Component { | ||
| 5 | + render() { | ||
| 6 | + return ( | ||
| 7 | + <View style={style.container}> | ||
| 8 | + <Text>총 3.8kg 추가</Text> | ||
| 9 | + </View> | ||
| 10 | + ); | ||
| 11 | + } | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +const style = StyleSheet.create({ | ||
| 15 | + container: { | ||
| 16 | + flex: 1, | ||
| 17 | + backgroundColor: "rgba(230,230,230,0.5)" | ||
| 18 | + } | ||
| 19 | +}); |
| 1 | platform :ios, '9.0' | 1 | platform :ios, '9.0' |
| 2 | require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' | 2 | require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' |
| 3 | 3 | ||
| 4 | -target 'FWIoT' do | 4 | +target 'TestProject' do |
| 5 | - # Pods for FWIoT | 5 | + # Pods for TestProject |
| 6 | pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector" | 6 | pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector" |
| 7 | pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec" | 7 | pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec" |
| 8 | pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired" | 8 | pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired" |
| ... | @@ -34,7 +34,8 @@ target 'FWIoT' do | ... | @@ -34,7 +34,8 @@ target 'FWIoT' do |
| 34 | pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.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' | 35 | pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' |
| 36 | 36 | ||
| 37 | - target 'FWIoTTests' do | 37 | + |
| 38 | + target 'TestProjectTests' do | ||
| 38 | inherit! :search_paths | 39 | inherit! :search_paths |
| 39 | # Pods for testing | 40 | # Pods for testing |
| 40 | end | 41 | end |
| ... | @@ -42,10 +43,10 @@ target 'FWIoT' do | ... | @@ -42,10 +43,10 @@ target 'FWIoT' do |
| 42 | use_native_modules! | 43 | use_native_modules! |
| 43 | end | 44 | end |
| 44 | 45 | ||
| 45 | -target 'FWIoT-tvOS' do | 46 | +target 'TestProject-tvOS' do |
| 46 | - # Pods for FWIoT-tvOS | 47 | + # Pods for TestProject-tvOS |
| 47 | 48 | ||
| 48 | - target 'FWIoT-tvOSTests' do | 49 | + target 'TestProject-tvOSTests' do |
| 49 | inherit! :search_paths | 50 | inherit! :search_paths |
| 50 | # Pods for testing | 51 | # Pods for testing |
| 51 | end | 52 | end | ... | ... |
This diff is collapsed. Click to expand it.
| ... | @@ -29,9 +29,9 @@ | ... | @@ -29,9 +29,9 @@ |
| 29 | <BuildableReference | 29 | <BuildableReference |
| 30 | BuildableIdentifier = "primary" | 30 | BuildableIdentifier = "primary" |
| 31 | BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" | 31 | BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" |
| 32 | - BuildableName = "FWIoT-tvOS.app" | 32 | + BuildableName = "TestProject-tvOS.app" |
| 33 | - BlueprintName = "FWIoT-tvOS" | 33 | + BlueprintName = "TestProject-tvOS" |
| 34 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 34 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 35 | </BuildableReference> | 35 | </BuildableReference> |
| 36 | </BuildActionEntry> | 36 | </BuildActionEntry> |
| 37 | <BuildActionEntry | 37 | <BuildActionEntry |
| ... | @@ -43,9 +43,9 @@ | ... | @@ -43,9 +43,9 @@ |
| 43 | <BuildableReference | 43 | <BuildableReference |
| 44 | BuildableIdentifier = "primary" | 44 | BuildableIdentifier = "primary" |
| 45 | BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7" | 45 | BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7" |
| 46 | - BuildableName = "FWIoT-tvOSTests.xctest" | 46 | + BuildableName = "TestProject-tvOSTests.xctest" |
| 47 | - BlueprintName = "FWIoT-tvOSTests" | 47 | + BlueprintName = "TestProject-tvOSTests" |
| 48 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 48 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 49 | </BuildableReference> | 49 | </BuildableReference> |
| 50 | </BuildActionEntry> | 50 | </BuildActionEntry> |
| 51 | </BuildActionEntries> | 51 | </BuildActionEntries> |
| ... | @@ -61,9 +61,9 @@ | ... | @@ -61,9 +61,9 @@ |
| 61 | <BuildableReference | 61 | <BuildableReference |
| 62 | BuildableIdentifier = "primary" | 62 | BuildableIdentifier = "primary" |
| 63 | BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7" | 63 | BlueprintIdentifier = "2D02E48F1E0B4A5D006451C7" |
| 64 | - BuildableName = "FWIoT-tvOSTests.xctest" | 64 | + BuildableName = "TestProject-tvOSTests.xctest" |
| 65 | - BlueprintName = "FWIoT-tvOSTests" | 65 | + BlueprintName = "TestProject-tvOSTests" |
| 66 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 66 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 67 | </BuildableReference> | 67 | </BuildableReference> |
| 68 | </TestableReference> | 68 | </TestableReference> |
| 69 | </Testables> | 69 | </Testables> |
| ... | @@ -71,9 +71,9 @@ | ... | @@ -71,9 +71,9 @@ |
| 71 | <BuildableReference | 71 | <BuildableReference |
| 72 | BuildableIdentifier = "primary" | 72 | BuildableIdentifier = "primary" |
| 73 | BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" | 73 | BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" |
| 74 | - BuildableName = "FWIoT-tvOS.app" | 74 | + BuildableName = "TestProject-tvOS.app" |
| 75 | - BlueprintName = "FWIoT-tvOS" | 75 | + BlueprintName = "TestProject-tvOS" |
| 76 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 76 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 77 | </BuildableReference> | 77 | </BuildableReference> |
| 78 | </MacroExpansion> | 78 | </MacroExpansion> |
| 79 | <AdditionalOptions> | 79 | <AdditionalOptions> |
| ... | @@ -94,9 +94,9 @@ | ... | @@ -94,9 +94,9 @@ |
| 94 | <BuildableReference | 94 | <BuildableReference |
| 95 | BuildableIdentifier = "primary" | 95 | BuildableIdentifier = "primary" |
| 96 | BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" | 96 | BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" |
| 97 | - BuildableName = "FWIoT-tvOS.app" | 97 | + BuildableName = "TestProject-tvOS.app" |
| 98 | - BlueprintName = "FWIoT-tvOS" | 98 | + BlueprintName = "TestProject-tvOS" |
| 99 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 99 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 100 | </BuildableReference> | 100 | </BuildableReference> |
| 101 | </BuildableProductRunnable> | 101 | </BuildableProductRunnable> |
| 102 | <AdditionalOptions> | 102 | <AdditionalOptions> |
| ... | @@ -113,9 +113,9 @@ | ... | @@ -113,9 +113,9 @@ |
| 113 | <BuildableReference | 113 | <BuildableReference |
| 114 | BuildableIdentifier = "primary" | 114 | BuildableIdentifier = "primary" |
| 115 | BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" | 115 | BlueprintIdentifier = "2D02E47A1E0B4A5D006451C7" |
| 116 | - BuildableName = "FWIoT-tvOS.app" | 116 | + BuildableName = "TestProject-tvOS.app" |
| 117 | - BlueprintName = "FWIoT-tvOS" | 117 | + BlueprintName = "TestProject-tvOS" |
| 118 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 118 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 119 | </BuildableReference> | 119 | </BuildableReference> |
| 120 | </BuildableProductRunnable> | 120 | </BuildableProductRunnable> |
| 121 | </ProfileAction> | 121 | </ProfileAction> | ... | ... |
| ... | @@ -29,9 +29,9 @@ | ... | @@ -29,9 +29,9 @@ |
| 29 | <BuildableReference | 29 | <BuildableReference |
| 30 | BuildableIdentifier = "primary" | 30 | BuildableIdentifier = "primary" |
| 31 | BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | 31 | BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |
| 32 | - BuildableName = "FWIoT.app" | 32 | + BuildableName = "TestProject.app" |
| 33 | - BlueprintName = "FWIoT" | 33 | + BlueprintName = "TestProject" |
| 34 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 34 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 35 | </BuildableReference> | 35 | </BuildableReference> |
| 36 | </BuildActionEntry> | 36 | </BuildActionEntry> |
| 37 | <BuildActionEntry | 37 | <BuildActionEntry |
| ... | @@ -43,9 +43,9 @@ | ... | @@ -43,9 +43,9 @@ |
| 43 | <BuildableReference | 43 | <BuildableReference |
| 44 | BuildableIdentifier = "primary" | 44 | BuildableIdentifier = "primary" |
| 45 | BlueprintIdentifier = "00E356ED1AD99517003FC87E" | 45 | BlueprintIdentifier = "00E356ED1AD99517003FC87E" |
| 46 | - BuildableName = "FWIoTTests.xctest" | 46 | + BuildableName = "TestProjectTests.xctest" |
| 47 | - BlueprintName = "FWIoTTests" | 47 | + BlueprintName = "TestProjectTests" |
| 48 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 48 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 49 | </BuildableReference> | 49 | </BuildableReference> |
| 50 | </BuildActionEntry> | 50 | </BuildActionEntry> |
| 51 | </BuildActionEntries> | 51 | </BuildActionEntries> |
| ... | @@ -61,9 +61,9 @@ | ... | @@ -61,9 +61,9 @@ |
| 61 | <BuildableReference | 61 | <BuildableReference |
| 62 | BuildableIdentifier = "primary" | 62 | BuildableIdentifier = "primary" |
| 63 | BlueprintIdentifier = "00E356ED1AD99517003FC87E" | 63 | BlueprintIdentifier = "00E356ED1AD99517003FC87E" |
| 64 | - BuildableName = "FWIoTTests.xctest" | 64 | + BuildableName = "TestProjectTests.xctest" |
| 65 | - BlueprintName = "FWIoTTests" | 65 | + BlueprintName = "TestProjectTests" |
| 66 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 66 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 67 | </BuildableReference> | 67 | </BuildableReference> |
| 68 | </TestableReference> | 68 | </TestableReference> |
| 69 | </Testables> | 69 | </Testables> |
| ... | @@ -71,9 +71,9 @@ | ... | @@ -71,9 +71,9 @@ |
| 71 | <BuildableReference | 71 | <BuildableReference |
| 72 | BuildableIdentifier = "primary" | 72 | BuildableIdentifier = "primary" |
| 73 | BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | 73 | BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |
| 74 | - BuildableName = "FWIoT.app" | 74 | + BuildableName = "TestProject.app" |
| 75 | - BlueprintName = "FWIoT" | 75 | + BlueprintName = "TestProject" |
| 76 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 76 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 77 | </BuildableReference> | 77 | </BuildableReference> |
| 78 | </MacroExpansion> | 78 | </MacroExpansion> |
| 79 | <AdditionalOptions> | 79 | <AdditionalOptions> |
| ... | @@ -94,9 +94,9 @@ | ... | @@ -94,9 +94,9 @@ |
| 94 | <BuildableReference | 94 | <BuildableReference |
| 95 | BuildableIdentifier = "primary" | 95 | BuildableIdentifier = "primary" |
| 96 | BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | 96 | BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |
| 97 | - BuildableName = "FWIoT.app" | 97 | + BuildableName = "TestProject.app" |
| 98 | - BlueprintName = "FWIoT" | 98 | + BlueprintName = "TestProject" |
| 99 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 99 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 100 | </BuildableReference> | 100 | </BuildableReference> |
| 101 | </BuildableProductRunnable> | 101 | </BuildableProductRunnable> |
| 102 | <AdditionalOptions> | 102 | <AdditionalOptions> |
| ... | @@ -113,9 +113,9 @@ | ... | @@ -113,9 +113,9 @@ |
| 113 | <BuildableReference | 113 | <BuildableReference |
| 114 | BuildableIdentifier = "primary" | 114 | BuildableIdentifier = "primary" |
| 115 | BlueprintIdentifier = "13B07F861A680F5B00A75B9A" | 115 | BlueprintIdentifier = "13B07F861A680F5B00A75B9A" |
| 116 | - BuildableName = "FWIoT.app" | 116 | + BuildableName = "TestProject.app" |
| 117 | - BlueprintName = "FWIoT" | 117 | + BlueprintName = "TestProject" |
| 118 | - ReferencedContainer = "container:FWIoT.xcodeproj"> | 118 | + ReferencedContainer = "container:TestProject.xcodeproj"> |
| 119 | </BuildableReference> | 119 | </BuildableReference> |
| 120 | </BuildableProductRunnable> | 120 | </BuildableProductRunnable> |
| 121 | </ProfileAction> | 121 | </ProfileAction> | ... | ... |
| ... | @@ -17,7 +17,7 @@ | ... | @@ -17,7 +17,7 @@ |
| 17 | { | 17 | { |
| 18 | RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; | 18 | RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions]; |
| 19 | RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge | 19 | RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge |
| 20 | - moduleName:@"FWIoT" | 20 | + moduleName:@"TestProject" |
| 21 | initialProperties:nil]; | 21 | initialProperties:nil]; |
| 22 | 22 | ||
| 23 | rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; | 23 | rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; | ... | ... |
| ... | @@ -18,7 +18,7 @@ | ... | @@ -18,7 +18,7 @@ |
| 18 | <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> | 18 | <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> |
| 19 | <nil key="highlightedColor"/> | 19 | <nil key="highlightedColor"/> |
| 20 | </label> | 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"> | 21 | + <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="TestProject" 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"/> | 22 | <rect key="frame" x="20" y="140" width="441" height="43"/> |
| 23 | <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/> | 23 | <fontDescription key="fontDescription" type="boldSystem" pointSize="36"/> |
| 24 | <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> | 24 | <color key="textColor" cocoaTouchSystemColor="darkTextColor"/> | ... | ... |
| ... | @@ -5,7 +5,7 @@ | ... | @@ -5,7 +5,7 @@ |
| 5 | <key>CFBundleDevelopmentRegion</key> | 5 | <key>CFBundleDevelopmentRegion</key> |
| 6 | <string>en</string> | 6 | <string>en</string> |
| 7 | <key>CFBundleDisplayName</key> | 7 | <key>CFBundleDisplayName</key> |
| 8 | - <string>FWIoT</string> | 8 | + <string>TestProject</string> |
| 9 | <key>CFBundleExecutable</key> | 9 | <key>CFBundleExecutable</key> |
| 10 | <string>$(EXECUTABLE_NAME)</string> | 10 | <string>$(EXECUTABLE_NAME)</string> |
| 11 | <key>CFBundleIdentifier</key> | 11 | <key>CFBundleIdentifier</key> |
| ... | @@ -54,8 +54,6 @@ | ... | @@ -54,8 +54,6 @@ |
| 54 | <key>UIViewControllerBasedStatusBarAppearance</key> | 54 | <key>UIViewControllerBasedStatusBarAppearance</key> |
| 55 | <false/> | 55 | <false/> |
| 56 | <key>UIAppFonts</key> | 56 | <key>UIAppFonts</key> |
| 57 | - <array> | 57 | + <array/> |
| 58 | - <string>BMJUA_ttf.ttf</string> | ||
| 59 | - </array> | ||
| 60 | </dict> | 58 | </dict> |
| 61 | </plist> | 59 | </plist> | ... | ... |
File moved
| ... | @@ -14,11 +14,11 @@ | ... | @@ -14,11 +14,11 @@ |
| 14 | #define TIMEOUT_SECONDS 600 | 14 | #define TIMEOUT_SECONDS 600 |
| 15 | #define TEXT_TO_LOOK_FOR @"Welcome to React" | 15 | #define TEXT_TO_LOOK_FOR @"Welcome to React" |
| 16 | 16 | ||
| 17 | -@interface FWIoTTests : XCTestCase | 17 | +@interface TestProjectTests : XCTestCase |
| 18 | 18 | ||
| 19 | @end | 19 | @end |
| 20 | 20 | ||
| 21 | -@implementation FWIoTTests | 21 | +@implementation TestProjectTests |
| 22 | 22 | ||
| 23 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test | 23 | - (BOOL)findSubviewInView:(UIView *)view matching:(BOOL(^)(UIView *view))test |
| 24 | { | 24 | { | ... | ... |
package-lock.json
deleted
100644 → 0
This diff could not be displayed because it is too large.
| 1 | { | 1 | { |
| 2 | - "name": "FWIoT", | 2 | + "name": "TestProject", |
| 3 | "version": "0.0.1", | 3 | "version": "0.0.1", |
| 4 | "private": true, | 4 | "private": true, |
| 5 | "scripts": { | 5 | "scripts": { |
| ... | @@ -11,20 +11,24 @@ | ... | @@ -11,20 +11,24 @@ |
| 11 | }, | 11 | }, |
| 12 | "dependencies": { | 12 | "dependencies": { |
| 13 | "react": "16.9.0", | 13 | "react": "16.9.0", |
| 14 | - "react-native": "0.61.5", | 14 | + "react-native": "0.61.4", |
| 15 | - "react-native-gesture-handler": "^1.5.2", | 15 | + "react-native-gesture-handler": "^1.5.0", |
| 16 | - "react-native-push-notification": "^3.1.9", | 16 | + "react-native-reanimated": "^1.4.0", |
| 17 | + "react-native-screens": "^2.0.0-alpha.8", | ||
| 18 | + "react-native-vector-icons": "^6.6.0", | ||
| 17 | "react-navigation": "^4.0.10", | 19 | "react-navigation": "^4.0.10", |
| 18 | - "react-navigation-stack": "^1.10.3" | 20 | + "react-navigation-drawer": "^2.3.3", |
| 21 | + "react-navigation-stack": "^1.10.3", | ||
| 22 | + "react-navigation-tabs": "^2.5.6" | ||
| 19 | }, | 23 | }, |
| 20 | "devDependencies": { | 24 | "devDependencies": { |
| 21 | - "@babel/core": "^7.6.2", | 25 | + "@babel/core": "^7.7.2", |
| 22 | - "@babel/runtime": "^7.6.2", | 26 | + "@babel/runtime": "^7.7.2", |
| 23 | "@react-native-community/eslint-config": "^0.0.5", | 27 | "@react-native-community/eslint-config": "^0.0.5", |
| 24 | "babel-jest": "^24.9.0", | 28 | "babel-jest": "^24.9.0", |
| 25 | - "eslint": "^6.5.1", | 29 | + "eslint": "^6.6.0", |
| 26 | "jest": "^24.9.0", | 30 | "jest": "^24.9.0", |
| 27 | - "metro-react-native-babel-preset": "^0.56.0", | 31 | + "metro-react-native-babel-preset": "^0.57.0", |
| 28 | "react-test-renderer": "16.9.0" | 32 | "react-test-renderer": "16.9.0" |
| 29 | }, | 33 | }, |
| 30 | "jest": { | 34 | "jest": { | ... | ... |
quickstart.js
deleted
100644 → 0
| 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 |
source/AppTabNavigator/HistoryTab.js
0 → 100644
| 1 | +import React, { Component } from 'react'; | ||
| 2 | +import { View, Text, StyleSheet } from 'react-native'; | ||
| 3 | + | ||
| 4 | +export default class HomeTab extends Component { | ||
| 5 | + render() { | ||
| 6 | + return ( | ||
| 7 | + <View style={style.container}> | ||
| 8 | + <Text>HistoryTab</Text> | ||
| 9 | + </View> | ||
| 10 | + ); | ||
| 11 | + } | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +const style = StyleSheet.create({ | ||
| 15 | + container: { | ||
| 16 | + flex: 1, | ||
| 17 | + alignItems: 'center', | ||
| 18 | + justifyContent: 'center', | ||
| 19 | + } | ||
| 20 | +}); |
source/AppTabNavigator/HomeTab.js
0 → 100644
| 1 | +import React, { Component } from 'react'; | ||
| 2 | +import { View, Text, StyleSheet } from 'react-native'; | ||
| 3 | +import WasteDetail from '../WasteDetail' | ||
| 4 | + | ||
| 5 | +export default class HomeTab extends Component { | ||
| 6 | + render() { | ||
| 7 | + return ( | ||
| 8 | + <View style={style.container}> | ||
| 9 | + <Text>HomeTab</Text> | ||
| 10 | + <WasteDetail></WasteDetail> | ||
| 11 | + </View> | ||
| 12 | + ); | ||
| 13 | + } | ||
| 14 | +} | ||
| 15 | + | ||
| 16 | +const style = StyleSheet.create({ | ||
| 17 | + container: { | ||
| 18 | + flex: 1, | ||
| 19 | + } | ||
| 20 | +}); |
source/AppTabNavigator/SettingTab.js
0 → 100644
| 1 | +import React, { Component } from 'react'; | ||
| 2 | +import { View, Text, StyleSheet } from 'react-native'; | ||
| 3 | + | ||
| 4 | +export default class HomeTab extends Component { | ||
| 5 | + render() { | ||
| 6 | + return ( | ||
| 7 | + <View style={style.container}> | ||
| 8 | + <Text>SettingTab</Text> | ||
| 9 | + </View> | ||
| 10 | + ); | ||
| 11 | + } | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +const style = StyleSheet.create({ | ||
| 15 | + container: { | ||
| 16 | + flex: 1, | ||
| 17 | + alignItems: 'center', | ||
| 18 | + justifyContent: 'center', | ||
| 19 | + } | ||
| 20 | +}); |
| ... | @@ -19,7 +19,7 @@ export default class Login extends Component { | ... | @@ -19,7 +19,7 @@ export default class Login extends Component { |
| 19 | <View style={styles.container}> | 19 | <View style={styles.container}> |
| 20 | <View style={styles.header}> | 20 | <View style={styles.header}> |
| 21 | <Text | 21 | <Text |
| 22 | - style={{textAlign : 'center', fontSize : 50, fontFamily : "BMJUA_ttf", marginTop:50}}>FW IoT</Text> | 22 | + style={{textAlign : 'center', fontSize : 50, marginTop:50}}>FW IoT</Text> |
| 23 | </View> | 23 | </View> |
| 24 | <View style={styles.logo}> | 24 | <View style={styles.logo}> |
| 25 | <Image | 25 | <Image |
| ... | @@ -30,9 +30,9 @@ export default class Login extends Component { | ... | @@ -30,9 +30,9 @@ export default class Login extends Component { |
| 30 | <View | 30 | <View |
| 31 | style={StyleSheet.inputPart}> | 31 | style={StyleSheet.inputPart}> |
| 32 | <Text | 32 | <Text |
| 33 | - style={{textAlign:'center',fontSize : 40, marginTop :20, fontFamily : "BMJUA_ttf"}}>Food Waste IoT</Text> | 33 | + style={{textAlign:'center',fontSize : 40, marginTop :20}}>Food Waste IoT</Text> |
| 34 | <Text | 34 | <Text |
| 35 | - style={{textAlign:'center',fontSize : 15, marginTop :20, fontFamily : "BMJUA_ttf"}}>기기 등록</Text> | 35 | + style={{textAlign:'center',fontSize : 15, marginTop :20}}>기기 등록</Text> |
| 36 | <TextInput | 36 | <TextInput |
| 37 | style={styles.input} | 37 | style={styles.input} |
| 38 | placeholder="ID" | 38 | placeholder="ID" | ... | ... |
| 1 | -import React, { Component, Notifications } from 'react'; | 1 | +import React, { Component } from 'react'; |
| 2 | -import { StyleSheet, Text, View, TextInput, Image, } from 'react-native'; | 2 | +import { StyleSheet, Platform, View, Text } from 'react-native'; |
| 3 | +import { createAppContainer } from 'react-navigation'; | ||
| 4 | +import { createMaterialTopTabNavigator } from 'react-navigation-tabs' | ||
| 5 | +import HomeTab from './AppTabNavigator/HomeTab' | ||
| 6 | +import HistoryTab from './AppTabNavigator/HistoryTab' | ||
| 7 | +import SettingTab from './AppTabNavigator/SettingTab' | ||
| 8 | + | ||
| 9 | +// 하단 탭 네비게이터 생성 | ||
| 10 | +const AppTabNavigator = createMaterialTopTabNavigator({ | ||
| 11 | + Home: { screen: HomeTab }, | ||
| 12 | + History: { screen: HistoryTab }, | ||
| 13 | + Setting: { screen: SettingTab } | ||
| 14 | +},{ | ||
| 15 | + animationEnabled: true, | ||
| 16 | + swipeEnabled: true, | ||
| 17 | + tabBarPosition: "bottom", | ||
| 18 | + tabBarOptions: { | ||
| 19 | + style: { | ||
| 20 | + ...Platform.select({ | ||
| 21 | + android:{ | ||
| 22 | + backgroundColor:'white', | ||
| 23 | + } | ||
| 24 | + }) | ||
| 25 | + }, | ||
| 26 | + iconStyle: { height: 10 }, | ||
| 27 | + activeTintColor: '#000', | ||
| 28 | + inactiveTintColor: '#d1cece', | ||
| 29 | + upperCaseLabel: true, | ||
| 30 | + showLabel: true, | ||
| 31 | + showIcon: true, | ||
| 32 | + } | ||
| 33 | +}); | ||
| 3 | 34 | ||
| 4 | -export default class Login extends Component { | 35 | +const AppTabContainet = createAppContainer(AppTabNavigator); |
| 5 | 36 | ||
| 6 | - constructor(props) { | 37 | +export default class MainScreen extends Component { |
| 7 | - super(props); | ||
| 8 | - this.state = { | ||
| 9 | - ID: this.props.navigation.getParam('ID'), | ||
| 10 | - }; | ||
| 11 | - } | ||
| 12 | - static navigationOptions = { | ||
| 13 | - title: 'MainScreen', | ||
| 14 | - }; | ||
| 15 | 38 | ||
| 16 | - render() { | 39 | + constructor(props) { |
| 17 | - return ( | 40 | + super(props); |
| 18 | - <View style={styles.container}> | 41 | + this.state = { |
| 19 | - <View style={styles.header}> | 42 | + ID: this.props.navigation.getParam('ID'), |
| 20 | - <Text>{this.state.ID}</Text> | 43 | + }; |
| 21 | - </View> | 44 | + } |
| 22 | - </View> | 45 | + |
| 23 | - ); | 46 | + static navigationOptions = { |
| 24 | - } | 47 | + title: 'FW IOT' } |
| 48 | + | ||
| 49 | + render() { | ||
| 50 | + return <AppTabContainet/>; // AppTabContainet 컴포넌트를 리턴한다. | ||
| 51 | + } | ||
| 25 | } | 52 | } |
| 26 | 53 | ||
| 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({ | 54 | const styles = StyleSheet.create({ |
| 64 | - input: { | 55 | + container: { |
| 65 | - height: 50, | 56 | + flex: 1, |
| 66 | - width: 250, | 57 | + alignItems: 'center', |
| 67 | - fontSize: 0, | 58 | + justifyContent: 'center', |
| 68 | - alignSelf: 'center', | 59 | + }, |
| 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 | }); | 60 | }); | ... | ... |
source/WasteDetail.js
0 → 100644
| 1 | +import React, { Component } from 'react'; | ||
| 2 | +import { View, Text, StyleSheet } from 'react-native'; | ||
| 3 | + | ||
| 4 | +export default class HomeTab extends Component { | ||
| 5 | + render() { | ||
| 6 | + return ( | ||
| 7 | + <View style={style.container}> | ||
| 8 | + <Text>총 3.8kg 추가</Text> | ||
| 9 | + </View> | ||
| 10 | + ); | ||
| 11 | + } | ||
| 12 | +} | ||
| 13 | + | ||
| 14 | +const style = StyleSheet.create({ | ||
| 15 | + container: { | ||
| 16 | + flex: 1, | ||
| 17 | + backgroundColor: "rgba(230,230,230,0.5)" | ||
| 18 | + } | ||
| 19 | +}); |
yarn.lock
0 → 100644
This diff could not be displayed because it is too large.
-
Please register or login to post a comment