Phecda

feat: add RNCamera

add RNCamera module and fix a bug on iOS which lead to crash. See react-native #28583, #28545
@@ -135,6 +135,8 @@ android { @@ -135,6 +135,8 @@ android {
135 targetSdkVersion rootProject.ext.targetSdkVersion 135 targetSdkVersion rootProject.ext.targetSdkVersion
136 versionCode 1 136 versionCode 1
137 versionName "1.0" 137 versionName "1.0"
  138 + missingDimensionStrategy 'react-native-camera', 'general'
  139 + multiDexEnabled true
138 } 140 }
139 splits { 141 splits {
140 abi { 142 abi {
1 -<manifest xmlns:android="http://schemas.android.com/apk/res/android" 1 +<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.ngplay">
2 - package="com.ngplay">  
3 2
4 - <uses-permission android:name="android.permission.INTERNET" /> 3 + <uses-permission android:name="android.permission.INTERNET" />
5 4
6 - <application 5 + <!-- 🚨 Permissioins start 🚨 -->
7 - android:name=".MainApplication" 6 +
8 - android:label="@string/app_name" 7 + <!-- <uses-permission android:name="android.permission.ACCEPT_HANDOVER" />-->
9 - android:icon="@mipmap/ic_launcher" 8 + <!-- <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />-->
10 - android:roundIcon="@mipmap/ic_launcher_round" 9 + <!-- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />-->
11 - android:allowBackup="false" 10 + <!-- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />-->
12 - android:theme="@style/AppTheme"> 11 + <!-- <uses-permission android:name="android.permission.ACTIVITY_RECOGNITION" />-->
13 - <activity 12 + <!-- <uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />-->
14 - android:name=".MainActivity" 13 + <!-- <uses-permission android:name="android.permission.BODY_SENSORS" />-->
15 - android:label="@string/app_name" 14 + <!-- <uses-permission android:name="android.permission.CALL_PHONE" />-->
16 - android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" 15 + <uses-permission android:name="android.permission.CAMERA" />
17 - android:launchMode="singleTask" 16 + <!-- <uses-permission android:name="android.permission.GET_ACCOUNTS" />-->
18 - android:windowSoftInputMode="adjustResize"> 17 + <!-- <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />-->
19 - <intent-filter> 18 + <!-- <uses-permission android:name="android.permission.READ_CALENDAR" />-->
20 - <action android:name="android.intent.action.MAIN" /> 19 + <!-- <uses-permission android:name="android.permission.READ_CALL_LOG" />-->
21 - <category android:name="android.intent.category.LAUNCHER" /> 20 + <!-- <uses-permission android:name="android.permission.READ_CONTACTS" />-->
22 - </intent-filter> 21 + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
23 - </activity> 22 + <!-- <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />-->
24 - <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" /> 23 + <!-- <uses-permission android:name="android.permission.READ_PHONE_STATE" />-->
25 - </application> 24 + <!-- <uses-permission android:name="android.permission.READ_SMS" />-->
  25 + <!-- <uses-permission android:name="android.permission.RECEIVE_MMS" />-->
  26 + <!-- <uses-permission android:name="android.permission.RECEIVE_SMS" />-->
  27 + <!-- <uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />-->
  28 + <!-- <uses-permission android:name="android.permission.RECORD_AUDIO" />-->
  29 + <!-- <uses-permission android:name="android.permission.SEND_SMS" />-->
  30 + <!-- <uses-permission android:name="android.permission.USE_SIP" />-->
  31 + <!-- <uses-permission android:name="android.permission.WRITE_CALENDAR" />-->
  32 + <!-- <uses-permission android:name="android.permission.WRITE_CALL_LOG" />-->
  33 + <!-- <uses-permission android:name="android.permission.WRITE_CONTACTS" />-->
  34 + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  35 +
  36 + <!-- … -->
  37 +
  38 + <application android:name=".MainApplication" android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:roundIcon="@mipmap/ic_launcher_round" android:allowBackup="false" android:theme="@style/AppTheme">
  39 + <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="keyboard|keyboardHidden|orientation|screenSize|uiMode" android:launchMode="singleTask" android:windowSoftInputMode="adjustResize">
  40 + <intent-filter>
  41 + <action android:name="android.intent.action.MAIN" />
  42 + <category android:name="android.intent.category.LAUNCHER" />
  43 + </intent-filter>
  44 + </activity>
  45 + <activity android:name="com.facebook.react.devsupport.DevSettingsActivity" />
  46 + </application>
26 47
27 </manifest> 48 </manifest>
@@ -8,18 +8,19 @@ @@ -8,18 +8,19 @@
8 8
9 /* Begin PBXBuildFile section */ 9 /* Begin PBXBuildFile section */
10 00E356F31AD99517003FC87E /* NGPlayTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* NGPlayTests.m */; }; 10 00E356F31AD99517003FC87E /* NGPlayTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* NGPlayTests.m */; };
11 - 1164347145E0DAEFB1F33C34 /* libPods-NGPlay-NGPlayTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = C4732ECC7CC9112665571B01 /* libPods-NGPlay-NGPlayTests.a */; };  
12 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 11 13B07FBC1A68108700A75B9A /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
13 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; }; 12 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB11A68108700A75B9A /* LaunchScreen.xib */; };
14 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 13 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
15 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 14 13B07FC11A68108700A75B9A /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
  15 + 288FC1B5F87808D918D46453 /* libPods-NGPlay-NGPlayTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D6D648C16083965167A7A246 /* libPods-NGPlay-NGPlayTests.a */; };
16 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; }; 16 2D02E4BC1E0B4A80006451C7 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB01A68108700A75B9A /* AppDelegate.m */; };
17 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; }; 17 2D02E4BD1E0B4A84006451C7 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 13B07FB51A68108700A75B9A /* Images.xcassets */; };
18 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; }; 18 2D02E4BF1E0B4AB3006451C7 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B07FB71A68108700A75B9A /* main.m */; };
19 2DCD954D1E0B4F2C00145EB5 /* NGPlayTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* NGPlayTests.m */; }; 19 2DCD954D1E0B4F2C00145EB5 /* NGPlayTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 00E356F21AD99517003FC87E /* NGPlayTests.m */; };
20 - 39CDDEC249ED7996A20106D1 /* libPods-NGPlay-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 8362A23EE219E5DDEC7EAE08 /* libPods-NGPlay-tvOSTests.a */; }; 20 + 6042DD5EE85D210DAA8FB423 /* libPods-NGPlay-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = B2B8A9D1FA03C19814654981 /* libPods-NGPlay-tvOS.a */; };
21 - 838E2F862CDD952C9D5DC6B9 /* libPods-NGPlay-tvOS.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 5580CA2F58A9BDE573C2079C /* libPods-NGPlay-tvOS.a */; }; 21 + B42641190DD22299CEC01B2A /* libPods-NGPlay-tvOSTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 2FE3472145785462D072698D /* libPods-NGPlay-tvOSTests.a */; };
22 - EA2B88C952C6F50E4262BF80 /* libPods-NGPlay.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3171A28C23A862E6FC323C63 /* libPods-NGPlay.a */; }; 22 + CA3002C2EBE7552EB8773862 /* libPods-NGPlay.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 3331BC6083E76C70FC7C040E /* libPods-NGPlay.a */; };
  23 + CE18668224486D6800FBDC7A /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = CE18668424486D6800FBDC7A /* InfoPlist.strings */; };
23 /* End PBXBuildFile section */ 24 /* End PBXBuildFile section */
24 25
25 /* Begin PBXContainerItemProxy section */ 26 /* Begin PBXContainerItemProxy section */
@@ -51,23 +52,25 @@ @@ -51,23 +52,25 @@
51 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = NGPlay/Images.xcassets; sourceTree = "<group>"; }; 52 13B07FB51A68108700A75B9A /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = NGPlay/Images.xcassets; sourceTree = "<group>"; };
52 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = NGPlay/Info.plist; sourceTree = "<group>"; }; 53 13B07FB61A68108700A75B9A /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = NGPlay/Info.plist; sourceTree = "<group>"; };
53 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = NGPlay/main.m; sourceTree = "<group>"; }; 54 13B07FB71A68108700A75B9A /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = NGPlay/main.m; sourceTree = "<group>"; };
  55 + 22BEBA34B828B68BDA82E305 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-NGPlayTests.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests.debug.xcconfig"; sourceTree = "<group>"; };
54 2D02E47B1E0B4A5D006451C7 /* NGPlay-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "NGPlay-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; }; 56 2D02E47B1E0B4A5D006451C7 /* NGPlay-tvOS.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "NGPlay-tvOS.app"; sourceTree = BUILT_PRODUCTS_DIR; };
55 2D02E4901E0B4A5D006451C7 /* NGPlay-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "NGPlay-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; 57 2D02E4901E0B4A5D006451C7 /* NGPlay-tvOSTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "NGPlay-tvOSTests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
56 - 3171A28C23A862E6FC323C63 /* libPods-NGPlay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 58 + 2FE3472145785462D072698D /* libPods-NGPlay-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
57 - 36D7CC1980131F16F91F5A16 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-NGPlayTests.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests.debug.xcconfig"; sourceTree = "<group>"; }; 59 + 3331BC6083E76C70FC7C040E /* libPods-NGPlay.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay.a"; sourceTree = BUILT_PRODUCTS_DIR; };
58 - 443F453B1BD772B1E17E2102 /* Pods-NGPlay-NGPlayTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-NGPlayTests.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests.release.xcconfig"; sourceTree = "<group>"; }; 60 + 3DCA2EF5483F07B06AE9B302 /* Pods-NGPlay-NGPlayTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-NGPlayTests.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests.release.xcconfig"; sourceTree = "<group>"; };
59 - 4855A1A8C2536C58DF04B3FA /* Pods-NGPlay.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay/Pods-NGPlay.debug.xcconfig"; sourceTree = "<group>"; }; 61 + 7F7DD72637495F202B0A046C /* Pods-NGPlay.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay.release.xcconfig"; path = "Target Support Files/Pods-NGPlay/Pods-NGPlay.release.xcconfig"; sourceTree = "<group>"; };
60 - 5580CA2F58A9BDE573C2079C /* libPods-NGPlay-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; }; 62 + 97422F73DEA00BC480DA2587 /* Pods-NGPlay-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOS.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOS/Pods-NGPlay-tvOS.release.xcconfig"; sourceTree = "<group>"; };
61 - 698938961D6FF8AC4FCF2E29 /* Pods-NGPlay-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOSTests/Pods-NGPlay-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; }; 63 + B2B8A9D1FA03C19814654981 /* libPods-NGPlay-tvOS.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-tvOS.a"; sourceTree = BUILT_PRODUCTS_DIR; };
62 - 73D0BCB1250DAB139582F311 /* Pods-NGPlay.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay.release.xcconfig"; path = "Target Support Files/Pods-NGPlay/Pods-NGPlay.release.xcconfig"; sourceTree = "<group>"; }; 64 + C71DD678E7D90A14A575E160 /* Pods-NGPlay.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay/Pods-NGPlay.debug.xcconfig"; sourceTree = "<group>"; };
63 - 781EA07544832578A8678DC7 /* Pods-NGPlay-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOS/Pods-NGPlay-tvOS.debug.xcconfig"; sourceTree = "<group>"; }; 65 + CB37CBA7FB02085DAB6424CF /* Pods-NGPlay-tvOSTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOSTests.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOSTests/Pods-NGPlay-tvOSTests.debug.xcconfig"; sourceTree = "<group>"; };
64 - 8362A23EE219E5DDEC7EAE08 /* libPods-NGPlay-tvOSTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-tvOSTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };  
65 - B9229FB3695E83651E4D11D5 /* Pods-NGPlay-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOSTests/Pods-NGPlay-tvOSTests.release.xcconfig"; sourceTree = "<group>"; };  
66 - C4732ECC7CC9112665571B01 /* libPods-NGPlay-NGPlayTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-NGPlayTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };  
67 CE18667F24480E4200FBDC7A /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.strings"; sourceTree = "<group>"; }; 66 CE18667F24480E4200FBDC7A /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.strings"; sourceTree = "<group>"; };
  67 + CE18668324486D6800FBDC7A /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
  68 + CE18668524486D6F00FBDC7A /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = "<group>"; };
  69 + CF55E7A4CE74442883154991 /* Pods-NGPlay-tvOSTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOSTests.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOSTests/Pods-NGPlay-tvOSTests.release.xcconfig"; sourceTree = "<group>"; };
  70 + D6D648C16083965167A7A246 /* libPods-NGPlay-NGPlayTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-NGPlay-NGPlayTests.a"; sourceTree = BUILT_PRODUCTS_DIR; };
68 ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; }; 71 ED297162215061F000B7C4FE /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = JavaScriptCore.framework; path = System/Library/Frameworks/JavaScriptCore.framework; sourceTree = SDKROOT; };
69 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; }; 72 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; };
70 - F63897AFB5B07795089F34F9 /* Pods-NGPlay-tvOS.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOS.release.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOS/Pods-NGPlay-tvOS.release.xcconfig"; sourceTree = "<group>"; }; 73 + FDAF748FE731FEA71CABBF01 /* Pods-NGPlay-tvOS.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-NGPlay-tvOS.debug.xcconfig"; path = "Target Support Files/Pods-NGPlay-tvOS/Pods-NGPlay-tvOS.debug.xcconfig"; sourceTree = "<group>"; };
71 /* End PBXFileReference section */ 74 /* End PBXFileReference section */
72 75
73 /* Begin PBXFrameworksBuildPhase section */ 76 /* Begin PBXFrameworksBuildPhase section */
@@ -75,7 +78,7 @@ @@ -75,7 +78,7 @@
75 isa = PBXFrameworksBuildPhase; 78 isa = PBXFrameworksBuildPhase;
76 buildActionMask = 2147483647; 79 buildActionMask = 2147483647;
77 files = ( 80 files = (
78 - 1164347145E0DAEFB1F33C34 /* libPods-NGPlay-NGPlayTests.a in Frameworks */, 81 + 288FC1B5F87808D918D46453 /* libPods-NGPlay-NGPlayTests.a in Frameworks */,
79 ); 82 );
80 runOnlyForDeploymentPostprocessing = 0; 83 runOnlyForDeploymentPostprocessing = 0;
81 }; 84 };
@@ -83,7 +86,7 @@ @@ -83,7 +86,7 @@
83 isa = PBXFrameworksBuildPhase; 86 isa = PBXFrameworksBuildPhase;
84 buildActionMask = 2147483647; 87 buildActionMask = 2147483647;
85 files = ( 88 files = (
86 - EA2B88C952C6F50E4262BF80 /* libPods-NGPlay.a in Frameworks */, 89 + CA3002C2EBE7552EB8773862 /* libPods-NGPlay.a in Frameworks */,
87 ); 90 );
88 runOnlyForDeploymentPostprocessing = 0; 91 runOnlyForDeploymentPostprocessing = 0;
89 }; 92 };
@@ -91,7 +94,7 @@ @@ -91,7 +94,7 @@
91 isa = PBXFrameworksBuildPhase; 94 isa = PBXFrameworksBuildPhase;
92 buildActionMask = 2147483647; 95 buildActionMask = 2147483647;
93 files = ( 96 files = (
94 - 838E2F862CDD952C9D5DC6B9 /* libPods-NGPlay-tvOS.a in Frameworks */, 97 + 6042DD5EE85D210DAA8FB423 /* libPods-NGPlay-tvOS.a in Frameworks */,
95 ); 98 );
96 runOnlyForDeploymentPostprocessing = 0; 99 runOnlyForDeploymentPostprocessing = 0;
97 }; 100 };
@@ -99,7 +102,7 @@ @@ -99,7 +102,7 @@
99 isa = PBXFrameworksBuildPhase; 102 isa = PBXFrameworksBuildPhase;
100 buildActionMask = 2147483647; 103 buildActionMask = 2147483647;
101 files = ( 104 files = (
102 - 39CDDEC249ED7996A20106D1 /* libPods-NGPlay-tvOSTests.a in Frameworks */, 105 + B42641190DD22299CEC01B2A /* libPods-NGPlay-tvOSTests.a in Frameworks */,
103 ); 106 );
104 runOnlyForDeploymentPostprocessing = 0; 107 runOnlyForDeploymentPostprocessing = 0;
105 }; 108 };
@@ -133,6 +136,7 @@ @@ -133,6 +136,7 @@
133 13B07FB61A68108700A75B9A /* Info.plist */, 136 13B07FB61A68108700A75B9A /* Info.plist */,
134 13B07FB11A68108700A75B9A /* LaunchScreen.xib */, 137 13B07FB11A68108700A75B9A /* LaunchScreen.xib */,
135 13B07FB71A68108700A75B9A /* main.m */, 138 13B07FB71A68108700A75B9A /* main.m */,
  139 + CE18668424486D6800FBDC7A /* InfoPlist.strings */,
136 ); 140 );
137 name = NGPlay; 141 name = NGPlay;
138 sourceTree = "<group>"; 142 sourceTree = "<group>";
@@ -142,10 +146,10 @@ @@ -142,10 +146,10 @@
142 children = ( 146 children = (
143 ED297162215061F000B7C4FE /* JavaScriptCore.framework */, 147 ED297162215061F000B7C4FE /* JavaScriptCore.framework */,
144 ED2971642150620600B7C4FE /* JavaScriptCore.framework */, 148 ED2971642150620600B7C4FE /* JavaScriptCore.framework */,
145 - 3171A28C23A862E6FC323C63 /* libPods-NGPlay.a */, 149 + 3331BC6083E76C70FC7C040E /* libPods-NGPlay.a */,
146 - C4732ECC7CC9112665571B01 /* libPods-NGPlay-NGPlayTests.a */, 150 + D6D648C16083965167A7A246 /* libPods-NGPlay-NGPlayTests.a */,
147 - 5580CA2F58A9BDE573C2079C /* libPods-NGPlay-tvOS.a */, 151 + B2B8A9D1FA03C19814654981 /* libPods-NGPlay-tvOS.a */,
148 - 8362A23EE219E5DDEC7EAE08 /* libPods-NGPlay-tvOSTests.a */, 152 + 2FE3472145785462D072698D /* libPods-NGPlay-tvOSTests.a */,
149 ); 153 );
150 name = Frameworks; 154 name = Frameworks;
151 sourceTree = "<group>"; 155 sourceTree = "<group>";
@@ -186,14 +190,14 @@ @@ -186,14 +190,14 @@
186 978F2DE249B40372BE3CFB34 /* Pods */ = { 190 978F2DE249B40372BE3CFB34 /* Pods */ = {
187 isa = PBXGroup; 191 isa = PBXGroup;
188 children = ( 192 children = (
189 - 4855A1A8C2536C58DF04B3FA /* Pods-NGPlay.debug.xcconfig */, 193 + C71DD678E7D90A14A575E160 /* Pods-NGPlay.debug.xcconfig */,
190 - 73D0BCB1250DAB139582F311 /* Pods-NGPlay.release.xcconfig */, 194 + 7F7DD72637495F202B0A046C /* Pods-NGPlay.release.xcconfig */,
191 - 36D7CC1980131F16F91F5A16 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */, 195 + 22BEBA34B828B68BDA82E305 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */,
192 - 443F453B1BD772B1E17E2102 /* Pods-NGPlay-NGPlayTests.release.xcconfig */, 196 + 3DCA2EF5483F07B06AE9B302 /* Pods-NGPlay-NGPlayTests.release.xcconfig */,
193 - 781EA07544832578A8678DC7 /* Pods-NGPlay-tvOS.debug.xcconfig */, 197 + FDAF748FE731FEA71CABBF01 /* Pods-NGPlay-tvOS.debug.xcconfig */,
194 - F63897AFB5B07795089F34F9 /* Pods-NGPlay-tvOS.release.xcconfig */, 198 + 97422F73DEA00BC480DA2587 /* Pods-NGPlay-tvOS.release.xcconfig */,
195 - 698938961D6FF8AC4FCF2E29 /* Pods-NGPlay-tvOSTests.debug.xcconfig */, 199 + CB37CBA7FB02085DAB6424CF /* Pods-NGPlay-tvOSTests.debug.xcconfig */,
196 - B9229FB3695E83651E4D11D5 /* Pods-NGPlay-tvOSTests.release.xcconfig */, 200 + CF55E7A4CE74442883154991 /* Pods-NGPlay-tvOSTests.release.xcconfig */,
197 ); 201 );
198 path = Pods; 202 path = Pods;
199 sourceTree = "<group>"; 203 sourceTree = "<group>";
@@ -205,11 +209,11 @@ @@ -205,11 +209,11 @@
205 isa = PBXNativeTarget; 209 isa = PBXNativeTarget;
206 buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "NGPlayTests" */; 210 buildConfigurationList = 00E357021AD99517003FC87E /* Build configuration list for PBXNativeTarget "NGPlayTests" */;
207 buildPhases = ( 211 buildPhases = (
208 - AF7CA5B873F71A1FB4E56637 /* [CP] Check Pods Manifest.lock */, 212 + 55827B61ABE11DB99B73D735 /* [CP] Check Pods Manifest.lock */,
209 00E356EA1AD99517003FC87E /* Sources */, 213 00E356EA1AD99517003FC87E /* Sources */,
210 00E356EB1AD99517003FC87E /* Frameworks */, 214 00E356EB1AD99517003FC87E /* Frameworks */,
211 00E356EC1AD99517003FC87E /* Resources */, 215 00E356EC1AD99517003FC87E /* Resources */,
212 - D5D387F840E9276032E1A161 /* [CP] Copy Pods Resources */, 216 + 9C9F0214FCC18C3F9F8BC0FE /* [CP] Copy Pods Resources */,
213 ); 217 );
214 buildRules = ( 218 buildRules = (
215 ); 219 );
@@ -225,13 +229,13 @@ @@ -225,13 +229,13 @@
225 isa = PBXNativeTarget; 229 isa = PBXNativeTarget;
226 buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "NGPlay" */; 230 buildConfigurationList = 13B07F931A680F5B00A75B9A /* Build configuration list for PBXNativeTarget "NGPlay" */;
227 buildPhases = ( 231 buildPhases = (
228 - 6A48AA69620DEC1B74C29AD2 /* [CP] Check Pods Manifest.lock */, 232 + E918BDC659F0D3C5A862E50A /* [CP] Check Pods Manifest.lock */,
229 FD10A7F022414F080027D42C /* Start Packager */, 233 FD10A7F022414F080027D42C /* Start Packager */,
230 13B07F871A680F5B00A75B9A /* Sources */, 234 13B07F871A680F5B00A75B9A /* Sources */,
231 13B07F8C1A680F5B00A75B9A /* Frameworks */, 235 13B07F8C1A680F5B00A75B9A /* Frameworks */,
232 13B07F8E1A680F5B00A75B9A /* Resources */, 236 13B07F8E1A680F5B00A75B9A /* Resources */,
233 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */, 237 00DD1BFF1BD5951E006B06BC /* Bundle React Native code and images */,
234 - FFA47E9D3DB73E89ADF80B32 /* [CP] Copy Pods Resources */, 238 + F497E0579BFD083304C65F31 /* [CP] Copy Pods Resources */,
235 ); 239 );
236 buildRules = ( 240 buildRules = (
237 ); 241 );
@@ -246,7 +250,7 @@ @@ -246,7 +250,7 @@
246 isa = PBXNativeTarget; 250 isa = PBXNativeTarget;
247 buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "NGPlay-tvOS" */; 251 buildConfigurationList = 2D02E4BA1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "NGPlay-tvOS" */;
248 buildPhases = ( 252 buildPhases = (
249 - 7F2C2457986D77ADA13C1AA9 /* [CP] Check Pods Manifest.lock */, 253 + AB335EA7C3C420CEB5EFF28A /* [CP] Check Pods Manifest.lock */,
250 FD10A7F122414F3F0027D42C /* Start Packager */, 254 FD10A7F122414F3F0027D42C /* Start Packager */,
251 2D02E4771E0B4A5D006451C7 /* Sources */, 255 2D02E4771E0B4A5D006451C7 /* Sources */,
252 2D02E4781E0B4A5D006451C7 /* Frameworks */, 256 2D02E4781E0B4A5D006451C7 /* Frameworks */,
@@ -266,7 +270,7 @@ @@ -266,7 +270,7 @@
266 isa = PBXNativeTarget; 270 isa = PBXNativeTarget;
267 buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "NGPlay-tvOSTests" */; 271 buildConfigurationList = 2D02E4BB1E0B4A5E006451C7 /* Build configuration list for PBXNativeTarget "NGPlay-tvOSTests" */;
268 buildPhases = ( 272 buildPhases = (
269 - 69E7B5B017B17519E840477E /* [CP] Check Pods Manifest.lock */, 273 + B9AC4E502CB670D7CB94DDC9 /* [CP] Check Pods Manifest.lock */,
270 2D02E48C1E0B4A5D006451C7 /* Sources */, 274 2D02E48C1E0B4A5D006451C7 /* Sources */,
271 2D02E48D1E0B4A5D006451C7 /* Frameworks */, 275 2D02E48D1E0B4A5D006451C7 /* Frameworks */,
272 2D02E48E1E0B4A5D006451C7 /* Resources */, 276 2D02E48E1E0B4A5D006451C7 /* Resources */,
@@ -343,6 +347,7 @@ @@ -343,6 +347,7 @@
343 buildActionMask = 2147483647; 347 buildActionMask = 2147483647;
344 files = ( 348 files = (
345 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */, 349 13B07FBF1A68108700A75B9A /* Images.xcassets in Resources */,
  350 + CE18668224486D6800FBDC7A /* InfoPlist.strings in Resources */,
346 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */, 351 13B07FBD1A68108700A75B9A /* LaunchScreen.xib in Resources */,
347 ); 352 );
348 runOnlyForDeploymentPostprocessing = 0; 353 runOnlyForDeploymentPostprocessing = 0;
@@ -393,7 +398,7 @@ @@ -393,7 +398,7 @@
393 shellPath = /bin/sh; 398 shellPath = /bin/sh;
394 shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh"; 399 shellScript = "export NODE_BINARY=node\n../node_modules/react-native/scripts/react-native-xcode.sh";
395 }; 400 };
396 - 69E7B5B017B17519E840477E /* [CP] Check Pods Manifest.lock */ = { 401 + 55827B61ABE11DB99B73D735 /* [CP] Check Pods Manifest.lock */ = {
397 isa = PBXShellScriptBuildPhase; 402 isa = PBXShellScriptBuildPhase;
398 buildActionMask = 2147483647; 403 buildActionMask = 2147483647;
399 files = ( 404 files = (
@@ -408,14 +413,62 @@ @@ -408,14 +413,62 @@
408 outputFileListPaths = ( 413 outputFileListPaths = (
409 ); 414 );
410 outputPaths = ( 415 outputPaths = (
411 - "$(DERIVED_FILE_DIR)/Pods-NGPlay-tvOSTests-checkManifestLockResult.txt", 416 + "$(DERIVED_FILE_DIR)/Pods-NGPlay-NGPlayTests-checkManifestLockResult.txt",
412 ); 417 );
413 runOnlyForDeploymentPostprocessing = 0; 418 runOnlyForDeploymentPostprocessing = 0;
414 shellPath = /bin/sh; 419 shellPath = /bin/sh;
415 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 420 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
416 showEnvVarsInLog = 0; 421 showEnvVarsInLog = 0;
417 }; 422 };
418 - 6A48AA69620DEC1B74C29AD2 /* [CP] Check Pods Manifest.lock */ = { 423 + 9C9F0214FCC18C3F9F8BC0FE /* [CP] Copy Pods Resources */ = {
  424 + isa = PBXShellScriptBuildPhase;
  425 + buildActionMask = 2147483647;
  426 + files = (
  427 + );
  428 + inputPaths = (
  429 + "${PODS_ROOT}/Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests-resources.sh",
  430 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
  431 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
  432 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
  433 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",
  434 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",
  435 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",
  436 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",
  437 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",
  438 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",
  439 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",
  440 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",
  441 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",
  442 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",
  443 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",
  444 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",
  445 + "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",
  446 + );
  447 + name = "[CP] Copy Pods Resources";
  448 + outputPaths = (
  449 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",
  450 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",
  451 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",
  452 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",
  453 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",
  454 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",
  455 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",
  456 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",
  457 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",
  458 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",
  459 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",
  460 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",
  461 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",
  462 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",
  463 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",
  464 + "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",
  465 + );
  466 + runOnlyForDeploymentPostprocessing = 0;
  467 + shellPath = /bin/sh;
  468 + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests-resources.sh\"\n";
  469 + showEnvVarsInLog = 0;
  470 + };
  471 + AB335EA7C3C420CEB5EFF28A /* [CP] Check Pods Manifest.lock */ = {
419 isa = PBXShellScriptBuildPhase; 472 isa = PBXShellScriptBuildPhase;
420 buildActionMask = 2147483647; 473 buildActionMask = 2147483647;
421 files = ( 474 files = (
@@ -430,14 +483,14 @@ @@ -430,14 +483,14 @@
430 outputFileListPaths = ( 483 outputFileListPaths = (
431 ); 484 );
432 outputPaths = ( 485 outputPaths = (
433 - "$(DERIVED_FILE_DIR)/Pods-NGPlay-checkManifestLockResult.txt", 486 + "$(DERIVED_FILE_DIR)/Pods-NGPlay-tvOS-checkManifestLockResult.txt",
434 ); 487 );
435 runOnlyForDeploymentPostprocessing = 0; 488 runOnlyForDeploymentPostprocessing = 0;
436 shellPath = /bin/sh; 489 shellPath = /bin/sh;
437 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 490 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
438 showEnvVarsInLog = 0; 491 showEnvVarsInLog = 0;
439 }; 492 };
440 - 7F2C2457986D77ADA13C1AA9 /* [CP] Check Pods Manifest.lock */ = { 493 + B9AC4E502CB670D7CB94DDC9 /* [CP] Check Pods Manifest.lock */ = {
441 isa = PBXShellScriptBuildPhase; 494 isa = PBXShellScriptBuildPhase;
442 buildActionMask = 2147483647; 495 buildActionMask = 2147483647;
443 files = ( 496 files = (
@@ -452,14 +505,14 @@ @@ -452,14 +505,14 @@
452 outputFileListPaths = ( 505 outputFileListPaths = (
453 ); 506 );
454 outputPaths = ( 507 outputPaths = (
455 - "$(DERIVED_FILE_DIR)/Pods-NGPlay-tvOS-checkManifestLockResult.txt", 508 + "$(DERIVED_FILE_DIR)/Pods-NGPlay-tvOSTests-checkManifestLockResult.txt",
456 ); 509 );
457 runOnlyForDeploymentPostprocessing = 0; 510 runOnlyForDeploymentPostprocessing = 0;
458 shellPath = /bin/sh; 511 shellPath = /bin/sh;
459 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 512 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
460 showEnvVarsInLog = 0; 513 showEnvVarsInLog = 0;
461 }; 514 };
462 - AF7CA5B873F71A1FB4E56637 /* [CP] Check Pods Manifest.lock */ = { 515 + E918BDC659F0D3C5A862E50A /* [CP] Check Pods Manifest.lock */ = {
463 isa = PBXShellScriptBuildPhase; 516 isa = PBXShellScriptBuildPhase;
464 buildActionMask = 2147483647; 517 buildActionMask = 2147483647;
465 files = ( 518 files = (
@@ -474,20 +527,20 @@ @@ -474,20 +527,20 @@
474 outputFileListPaths = ( 527 outputFileListPaths = (
475 ); 528 );
476 outputPaths = ( 529 outputPaths = (
477 - "$(DERIVED_FILE_DIR)/Pods-NGPlay-NGPlayTests-checkManifestLockResult.txt", 530 + "$(DERIVED_FILE_DIR)/Pods-NGPlay-checkManifestLockResult.txt",
478 ); 531 );
479 runOnlyForDeploymentPostprocessing = 0; 532 runOnlyForDeploymentPostprocessing = 0;
480 shellPath = /bin/sh; 533 shellPath = /bin/sh;
481 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; 534 shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n";
482 showEnvVarsInLog = 0; 535 showEnvVarsInLog = 0;
483 }; 536 };
484 - D5D387F840E9276032E1A161 /* [CP] Copy Pods Resources */ = { 537 + F497E0579BFD083304C65F31 /* [CP] Copy Pods Resources */ = {
485 isa = PBXShellScriptBuildPhase; 538 isa = PBXShellScriptBuildPhase;
486 buildActionMask = 2147483647; 539 buildActionMask = 2147483647;
487 files = ( 540 files = (
488 ); 541 );
489 inputPaths = ( 542 inputPaths = (
490 - "${PODS_ROOT}/Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests-resources.sh", 543 + "${PODS_ROOT}/Target Support Files/Pods-NGPlay/Pods-NGPlay-resources.sh",
491 "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf", 544 "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",
492 "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf", 545 "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",
493 "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf", 546 "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",
@@ -526,7 +579,7 @@ @@ -526,7 +579,7 @@
526 ); 579 );
527 runOnlyForDeploymentPostprocessing = 0; 580 runOnlyForDeploymentPostprocessing = 0;
528 shellPath = /bin/sh; 581 shellPath = /bin/sh;
529 - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NGPlay-NGPlayTests/Pods-NGPlay-NGPlayTests-resources.sh\"\n"; 582 + shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NGPlay/Pods-NGPlay-resources.sh\"\n";
530 showEnvVarsInLog = 0; 583 showEnvVarsInLog = 0;
531 }; 584 };
532 FD10A7F022414F080027D42C /* Start Packager */ = { 585 FD10A7F022414F080027D42C /* Start Packager */ = {
@@ -567,54 +620,6 @@ @@ -567,54 +620,6 @@
567 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"; 620 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";
568 showEnvVarsInLog = 0; 621 showEnvVarsInLog = 0;
569 }; 622 };
570 - FFA47E9D3DB73E89ADF80B32 /* [CP] Copy Pods Resources */ = {  
571 - isa = PBXShellScriptBuildPhase;  
572 - buildActionMask = 2147483647;  
573 - files = (  
574 - );  
575 - inputPaths = (  
576 - "${PODS_ROOT}/Target Support Files/Pods-NGPlay/Pods-NGPlay-resources.sh",  
577 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/AntDesign.ttf",  
578 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Entypo.ttf",  
579 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/EvilIcons.ttf",  
580 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Feather.ttf",  
581 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome.ttf",  
582 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Brands.ttf",  
583 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Regular.ttf",  
584 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/FontAwesome5_Solid.ttf",  
585 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Fontisto.ttf",  
586 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Foundation.ttf",  
587 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Ionicons.ttf",  
588 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialCommunityIcons.ttf",  
589 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/MaterialIcons.ttf",  
590 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Octicons.ttf",  
591 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/SimpleLineIcons.ttf",  
592 - "${PODS_ROOT}/../../node_modules/react-native-vector-icons/Fonts/Zocial.ttf",  
593 - );  
594 - name = "[CP] Copy Pods Resources";  
595 - outputPaths = (  
596 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/AntDesign.ttf",  
597 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Entypo.ttf",  
598 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/EvilIcons.ttf",  
599 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Feather.ttf",  
600 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome.ttf",  
601 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Brands.ttf",  
602 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Regular.ttf",  
603 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/FontAwesome5_Solid.ttf",  
604 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Fontisto.ttf",  
605 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Foundation.ttf",  
606 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Ionicons.ttf",  
607 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialCommunityIcons.ttf",  
608 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/MaterialIcons.ttf",  
609 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Octicons.ttf",  
610 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/SimpleLineIcons.ttf",  
611 - "${TARGET_BUILD_DIR}/${UNLOCALIZED_RESOURCES_FOLDER_PATH}/Zocial.ttf",  
612 - );  
613 - runOnlyForDeploymentPostprocessing = 0;  
614 - shellPath = /bin/sh;  
615 - shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-NGPlay/Pods-NGPlay-resources.sh\"\n";  
616 - showEnvVarsInLog = 0;  
617 - };  
618 /* End PBXShellScriptBuildPhase section */ 623 /* End PBXShellScriptBuildPhase section */
619 624
620 /* Begin PBXSourcesBuildPhase section */ 625 /* Begin PBXSourcesBuildPhase section */
@@ -678,12 +683,21 @@ @@ -678,12 +683,21 @@
678 path = NGPlay; 683 path = NGPlay;
679 sourceTree = "<group>"; 684 sourceTree = "<group>";
680 }; 685 };
  686 + CE18668424486D6800FBDC7A /* InfoPlist.strings */ = {
  687 + isa = PBXVariantGroup;
  688 + children = (
  689 + CE18668324486D6800FBDC7A /* en */,
  690 + CE18668524486D6F00FBDC7A /* zh-Hans */,
  691 + );
  692 + name = InfoPlist.strings;
  693 + sourceTree = "<group>";
  694 + };
681 /* End PBXVariantGroup section */ 695 /* End PBXVariantGroup section */
682 696
683 /* Begin XCBuildConfiguration section */ 697 /* Begin XCBuildConfiguration section */
684 00E356F61AD99517003FC87E /* Debug */ = { 698 00E356F61AD99517003FC87E /* Debug */ = {
685 isa = XCBuildConfiguration; 699 isa = XCBuildConfiguration;
686 - baseConfigurationReference = 36D7CC1980131F16F91F5A16 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */; 700 + baseConfigurationReference = 22BEBA34B828B68BDA82E305 /* Pods-NGPlay-NGPlayTests.debug.xcconfig */;
687 buildSettings = { 701 buildSettings = {
688 BUNDLE_LOADER = "$(TEST_HOST)"; 702 BUNDLE_LOADER = "$(TEST_HOST)";
689 GCC_PREPROCESSOR_DEFINITIONS = ( 703 GCC_PREPROCESSOR_DEFINITIONS = (
@@ -706,7 +720,7 @@ @@ -706,7 +720,7 @@
706 }; 720 };
707 00E356F71AD99517003FC87E /* Release */ = { 721 00E356F71AD99517003FC87E /* Release */ = {
708 isa = XCBuildConfiguration; 722 isa = XCBuildConfiguration;
709 - baseConfigurationReference = 443F453B1BD772B1E17E2102 /* Pods-NGPlay-NGPlayTests.release.xcconfig */; 723 + baseConfigurationReference = 3DCA2EF5483F07B06AE9B302 /* Pods-NGPlay-NGPlayTests.release.xcconfig */;
710 buildSettings = { 724 buildSettings = {
711 BUNDLE_LOADER = "$(TEST_HOST)"; 725 BUNDLE_LOADER = "$(TEST_HOST)";
712 COPY_PHASE_STRIP = NO; 726 COPY_PHASE_STRIP = NO;
@@ -726,7 +740,7 @@ @@ -726,7 +740,7 @@
726 }; 740 };
727 13B07F941A680F5B00A75B9A /* Debug */ = { 741 13B07F941A680F5B00A75B9A /* Debug */ = {
728 isa = XCBuildConfiguration; 742 isa = XCBuildConfiguration;
729 - baseConfigurationReference = 4855A1A8C2536C58DF04B3FA /* Pods-NGPlay.debug.xcconfig */; 743 + baseConfigurationReference = C71DD678E7D90A14A575E160 /* Pods-NGPlay.debug.xcconfig */;
730 buildSettings = { 744 buildSettings = {
731 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 745 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
732 CLANG_ENABLE_MODULES = YES; 746 CLANG_ENABLE_MODULES = YES;
@@ -754,7 +768,7 @@ @@ -754,7 +768,7 @@
754 }; 768 };
755 13B07F951A680F5B00A75B9A /* Release */ = { 769 13B07F951A680F5B00A75B9A /* Release */ = {
756 isa = XCBuildConfiguration; 770 isa = XCBuildConfiguration;
757 - baseConfigurationReference = 73D0BCB1250DAB139582F311 /* Pods-NGPlay.release.xcconfig */; 771 + baseConfigurationReference = 7F7DD72637495F202B0A046C /* Pods-NGPlay.release.xcconfig */;
758 buildSettings = { 772 buildSettings = {
759 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 773 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
760 CLANG_ENABLE_MODULES = YES; 774 CLANG_ENABLE_MODULES = YES;
@@ -776,7 +790,7 @@ @@ -776,7 +790,7 @@
776 }; 790 };
777 2D02E4971E0B4A5E006451C7 /* Debug */ = { 791 2D02E4971E0B4A5E006451C7 /* Debug */ = {
778 isa = XCBuildConfiguration; 792 isa = XCBuildConfiguration;
779 - baseConfigurationReference = 781EA07544832578A8678DC7 /* Pods-NGPlay-tvOS.debug.xcconfig */; 793 + baseConfigurationReference = FDAF748FE731FEA71CABBF01 /* Pods-NGPlay-tvOS.debug.xcconfig */;
780 buildSettings = { 794 buildSettings = {
781 ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; 795 ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
782 ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 796 ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
@@ -804,7 +818,7 @@ @@ -804,7 +818,7 @@
804 }; 818 };
805 2D02E4981E0B4A5E006451C7 /* Release */ = { 819 2D02E4981E0B4A5E006451C7 /* Release */ = {
806 isa = XCBuildConfiguration; 820 isa = XCBuildConfiguration;
807 - baseConfigurationReference = F63897AFB5B07795089F34F9 /* Pods-NGPlay-tvOS.release.xcconfig */; 821 + baseConfigurationReference = 97422F73DEA00BC480DA2587 /* Pods-NGPlay-tvOS.release.xcconfig */;
808 buildSettings = { 822 buildSettings = {
809 ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image"; 823 ASSETCATALOG_COMPILER_APPICON_NAME = "App Icon & Top Shelf Image";
810 ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; 824 ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
@@ -832,7 +846,7 @@ @@ -832,7 +846,7 @@
832 }; 846 };
833 2D02E4991E0B4A5E006451C7 /* Debug */ = { 847 2D02E4991E0B4A5E006451C7 /* Debug */ = {
834 isa = XCBuildConfiguration; 848 isa = XCBuildConfiguration;
835 - baseConfigurationReference = 698938961D6FF8AC4FCF2E29 /* Pods-NGPlay-tvOSTests.debug.xcconfig */; 849 + baseConfigurationReference = CB37CBA7FB02085DAB6424CF /* Pods-NGPlay-tvOSTests.debug.xcconfig */;
836 buildSettings = { 850 buildSettings = {
837 BUNDLE_LOADER = "$(TEST_HOST)"; 851 BUNDLE_LOADER = "$(TEST_HOST)";
838 CLANG_ANALYZER_NONNULL = YES; 852 CLANG_ANALYZER_NONNULL = YES;
@@ -859,7 +873,7 @@ @@ -859,7 +873,7 @@
859 }; 873 };
860 2D02E49A1E0B4A5E006451C7 /* Release */ = { 874 2D02E49A1E0B4A5E006451C7 /* Release */ = {
861 isa = XCBuildConfiguration; 875 isa = XCBuildConfiguration;
862 - baseConfigurationReference = B9229FB3695E83651E4D11D5 /* Pods-NGPlay-tvOSTests.release.xcconfig */; 876 + baseConfigurationReference = CF55E7A4CE74442883154991 /* Pods-NGPlay-tvOSTests.release.xcconfig */;
863 buildSettings = { 877 buildSettings = {
864 BUNDLE_LOADER = "$(TEST_HOST)"; 878 BUNDLE_LOADER = "$(TEST_HOST)";
865 CLANG_ANALYZER_NONNULL = YES; 879 CLANG_ANALYZER_NONNULL = YES;
@@ -37,8 +37,14 @@ @@ -37,8 +37,14 @@
37 </dict> 37 </dict>
38 </dict> 38 </dict>
39 </dict> 39 </dict>
  40 + <key>NSCameraUsageDescription</key>
  41 + <string>Use your camera to take a photo or scan codes</string>
40 <key>NSLocationWhenInUseUsageDescription</key> 42 <key>NSLocationWhenInUseUsageDescription</key>
41 - <string></string> 43 + <string>Use your location to check security</string>
  44 + <key>NSPhotoLibraryAddUsageDescription</key>
  45 + <string>Add photos to your photo library</string>
  46 + <key>NSPhotoLibraryUsageDescription</key>
  47 + <string>Read images from your photo library to set a avatar or scan codes</string>
42 <key>UIAppFonts</key> 48 <key>UIAppFonts</key>
43 <array> 49 <array>
44 <string>AntDesign.ttf</string> 50 <string>AntDesign.ttf</string>
@@ -2,7 +2,7 @@ platform :ios, '9.0' @@ -2,7 +2,7 @@ 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 def add_flipper_pods! 4 def add_flipper_pods!
5 - version = '~> 0.33.1' 5 + version = '~> 0.37.0'
6 pod 'FlipperKit', version, :configuration => 'Debug' 6 pod 'FlipperKit', version, :configuration => 'Debug'
7 pod 'FlipperKit/FlipperKitLayoutPlugin', version, :configuration => 'Debug' 7 pod 'FlipperKit/FlipperKitLayoutPlugin', version, :configuration => 'Debug'
8 pod 'FlipperKit/SKIOSNetworkPlugin', version, :configuration => 'Debug' 8 pod 'FlipperKit/SKIOSNetworkPlugin', version, :configuration => 'Debug'
@@ -54,6 +54,27 @@ target 'NGPlay' do @@ -54,6 +54,27 @@ target 'NGPlay' do
54 pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec' 54 pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
55 pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec' 55 pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'
56 56
  57 + # RNPermission start
  58 + permissions_path = '../node_modules/react-native-permissions/ios'
  59 +
  60 + # pod 'Permission-BluetoothPeripheral', :path => "#{permissions_path}/BluetoothPeripheral.podspec"
  61 + # pod 'Permission-Calendars', :path => "#{permissions_path}/Calendars.podspec"
  62 + pod 'Permission-Camera', :path => "#{permissions_path}/Camera.podspec"
  63 + # pod 'Permission-Contacts', :path => "#{permissions_path}/Contacts.podspec"
  64 + # pod 'Permission-FaceID', :path => "#{permissions_path}/FaceID.podspec"
  65 + # pod 'Permission-LocationAlways', :path => "#{permissions_path}/LocationAlways.podspec"
  66 + pod 'Permission-LocationWhenInUse', :path => "#{permissions_path}/LocationWhenInUse.podspec"
  67 + # pod 'Permission-MediaLibrary', :path => "#{permissions_path}/MediaLibrary.podspec"
  68 + # pod 'Permission-Microphone', :path => "#{permissions_path}/Microphone.podspec"
  69 + # pod 'Permission-Motion', :path => "#{permissions_path}/Motion.podspec"
  70 + # pod 'Permission-Notifications', :path => "#{permissions_path}/Notifications.podspec"
  71 + pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary.podspec"
  72 + # pod 'Permission-Reminders', :path => "#{permissions_path}/Reminders.podspec"
  73 + # pod 'Permission-Siri', :path => "#{permissions_path}/Siri.podspec"
  74 + # pod 'Permission-SpeechRecognition', :path => "#{permissions_path}/SpeechRecognition.podspec"
  75 + # pod 'Permission-StoreKit', :path => "#{permissions_path}/StoreKit.podspec"
  76 + # RNPermission end
  77 +
57 target 'NGPlayTests' do 78 target 'NGPlayTests' do
58 inherit! :complete 79 inherit! :complete
59 # Pods for testing 80 # Pods for testing
@@ -11,11 +11,11 @@ PODS: @@ -11,11 +11,11 @@ PODS:
11 - React-Core (= 0.62.1) 11 - React-Core (= 0.62.1)
12 - React-jsi (= 0.62.1) 12 - React-jsi (= 0.62.1)
13 - ReactCommon/turbomodule/core (= 0.62.1) 13 - ReactCommon/turbomodule/core (= 0.62.1)
14 - - Flipper (0.33.1): 14 + - Flipper (0.37.0):
15 - - Flipper-Folly (~> 2.1) 15 + - Flipper-Folly (~> 2.2)
16 - - Flipper-RSocket (~> 1.0) 16 + - Flipper-RSocket (~> 1.1)
17 - Flipper-DoubleConversion (1.1.7) 17 - Flipper-DoubleConversion (1.1.7)
18 - - Flipper-Folly (2.1.1): 18 + - Flipper-Folly (2.2.0):
19 - boost-for-react-native 19 - boost-for-react-native
20 - CocoaLibEvent (~> 1.0) 20 - CocoaLibEvent (~> 1.0)
21 - Flipper-DoubleConversion 21 - Flipper-DoubleConversion
@@ -23,38 +23,38 @@ PODS: @@ -23,38 +23,38 @@ PODS:
23 - OpenSSL-Universal (= 1.0.2.19) 23 - OpenSSL-Universal (= 1.0.2.19)
24 - Flipper-Glog (0.3.6) 24 - Flipper-Glog (0.3.6)
25 - Flipper-PeerTalk (0.0.4) 25 - Flipper-PeerTalk (0.0.4)
26 - - Flipper-RSocket (1.0.0): 26 + - Flipper-RSocket (1.1.0):
27 - - Flipper-Folly (~> 2.0) 27 + - Flipper-Folly (~> 2.2)
28 - - FlipperKit (0.33.1): 28 + - FlipperKit (0.37.0):
29 - - FlipperKit/Core (= 0.33.1) 29 + - FlipperKit/Core (= 0.37.0)
30 - - FlipperKit/Core (0.33.1): 30 + - FlipperKit/Core (0.37.0):
31 - - Flipper (~> 0.33.1) 31 + - Flipper (~> 0.37.0)
32 - FlipperKit/CppBridge 32 - FlipperKit/CppBridge
33 - FlipperKit/FBCxxFollyDynamicConvert 33 - FlipperKit/FBCxxFollyDynamicConvert
34 - FlipperKit/FBDefines 34 - FlipperKit/FBDefines
35 - FlipperKit/FKPortForwarding 35 - FlipperKit/FKPortForwarding
36 - - FlipperKit/CppBridge (0.33.1): 36 + - FlipperKit/CppBridge (0.37.0):
37 - - Flipper (~> 0.33.1) 37 + - Flipper (~> 0.37.0)
38 - - FlipperKit/FBCxxFollyDynamicConvert (0.33.1): 38 + - FlipperKit/FBCxxFollyDynamicConvert (0.37.0):
39 - - Flipper-Folly (~> 2.1) 39 + - Flipper-Folly (~> 2.2)
40 - - FlipperKit/FBDefines (0.33.1) 40 + - FlipperKit/FBDefines (0.37.0)
41 - - FlipperKit/FKPortForwarding (0.33.1): 41 + - FlipperKit/FKPortForwarding (0.37.0):
42 - CocoaAsyncSocket (~> 7.6) 42 - CocoaAsyncSocket (~> 7.6)
43 - Flipper-PeerTalk (~> 0.0.4) 43 - Flipper-PeerTalk (~> 0.0.4)
44 - - FlipperKit/FlipperKitHighlightOverlay (0.33.1) 44 + - FlipperKit/FlipperKitHighlightOverlay (0.37.0)
45 - - FlipperKit/FlipperKitLayoutPlugin (0.33.1): 45 + - FlipperKit/FlipperKitLayoutPlugin (0.37.0):
46 - FlipperKit/Core 46 - FlipperKit/Core
47 - FlipperKit/FlipperKitHighlightOverlay 47 - FlipperKit/FlipperKitHighlightOverlay
48 - FlipperKit/FlipperKitLayoutTextSearchable 48 - FlipperKit/FlipperKitLayoutTextSearchable
49 - YogaKit (~> 1.18) 49 - YogaKit (~> 1.18)
50 - - FlipperKit/FlipperKitLayoutTextSearchable (0.33.1) 50 + - FlipperKit/FlipperKitLayoutTextSearchable (0.37.0)
51 - - FlipperKit/FlipperKitNetworkPlugin (0.33.1): 51 + - FlipperKit/FlipperKitNetworkPlugin (0.37.0):
52 - FlipperKit/Core 52 - FlipperKit/Core
53 - - FlipperKit/FlipperKitReactPlugin (0.33.1): 53 + - FlipperKit/FlipperKitReactPlugin (0.37.0):
54 - FlipperKit/Core 54 - FlipperKit/Core
55 - - FlipperKit/FlipperKitUserDefaultsPlugin (0.33.1): 55 + - FlipperKit/FlipperKitUserDefaultsPlugin (0.37.0):
56 - FlipperKit/Core 56 - FlipperKit/Core
57 - - FlipperKit/SKIOSNetworkPlugin (0.33.1): 57 + - FlipperKit/SKIOSNetworkPlugin (0.37.0):
58 - FlipperKit/Core 58 - FlipperKit/Core
59 - FlipperKit/FlipperKitNetworkPlugin 59 - FlipperKit/FlipperKitNetworkPlugin
60 - Folly (2018.10.22.00): 60 - Folly (2018.10.22.00):
@@ -70,6 +70,12 @@ PODS: @@ -70,6 +70,12 @@ PODS:
70 - OpenSSL-Universal (1.0.2.19): 70 - OpenSSL-Universal (1.0.2.19):
71 - OpenSSL-Universal/Static (= 1.0.2.19) 71 - OpenSSL-Universal/Static (= 1.0.2.19)
72 - OpenSSL-Universal/Static (1.0.2.19) 72 - OpenSSL-Universal/Static (1.0.2.19)
  73 + - Permission-Camera (2.1.2):
  74 + - RNPermissions
  75 + - Permission-LocationWhenInUse (2.1.2):
  76 + - RNPermissions
  77 + - Permission-PhotoLibrary (2.1.2):
  78 + - RNPermissions
73 - RCTRequired (0.62.1) 79 - RCTRequired (0.62.1)
74 - RCTTypeSafety (0.62.1): 80 - RCTTypeSafety (0.62.1):
75 - FBLazyVector (= 0.62.1) 81 - FBLazyVector (= 0.62.1)
@@ -233,6 +239,14 @@ PODS: @@ -233,6 +239,14 @@ PODS:
233 - React-cxxreact (= 0.62.1) 239 - React-cxxreact (= 0.62.1)
234 - React-jsi (= 0.62.1) 240 - React-jsi (= 0.62.1)
235 - React-jsinspector (0.62.1) 241 - React-jsinspector (0.62.1)
  242 + - react-native-camera (3.23.1):
  243 + - React
  244 + - react-native-camera/RCT (= 3.23.1)
  245 + - react-native-camera/RN (= 3.23.1)
  246 + - react-native-camera/RCT (3.23.1):
  247 + - React
  248 + - react-native-camera/RN (3.23.1):
  249 + - React
236 - react-native-netinfo (5.7.1): 250 - react-native-netinfo (5.7.1):
237 - React 251 - React
238 - react-native-safe-area-context (0.7.3): 252 - react-native-safe-area-context (0.7.3):
@@ -310,6 +324,8 @@ PODS: @@ -310,6 +324,8 @@ PODS:
310 - React 324 - React
311 - RNLocalize (1.4.0): 325 - RNLocalize (1.4.0):
312 - React 326 - React
  327 + - RNPermissions (2.1.2):
  328 + - React
313 - RNReanimated (1.7.1): 329 - RNReanimated (1.7.1):
314 - React 330 - React
315 - RNScreens (2.4.0): 331 - RNScreens (2.4.0):
@@ -324,13 +340,16 @@ DEPENDENCIES: @@ -324,13 +340,16 @@ DEPENDENCIES:
324 - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`) 340 - DoubleConversion (from `../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec`)
325 - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`) 341 - FBLazyVector (from `../node_modules/react-native/Libraries/FBLazyVector`)
326 - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`) 342 - FBReactNativeSpec (from `../node_modules/react-native/Libraries/FBReactNativeSpec`)
327 - - FlipperKit (~> 0.33.1) 343 + - FlipperKit (~> 0.37.0)
328 - - FlipperKit/FlipperKitLayoutPlugin (~> 0.33.1) 344 + - FlipperKit/FlipperKitLayoutPlugin (~> 0.37.0)
329 - - FlipperKit/FlipperKitReactPlugin (~> 0.33.1) 345 + - FlipperKit/FlipperKitReactPlugin (~> 0.37.0)
330 - - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.33.1) 346 + - FlipperKit/FlipperKitUserDefaultsPlugin (~> 0.37.0)
331 - - FlipperKit/SKIOSNetworkPlugin (~> 0.33.1) 347 + - FlipperKit/SKIOSNetworkPlugin (~> 0.37.0)
332 - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`) 348 - Folly (from `../node_modules/react-native/third-party-podspecs/Folly.podspec`)
333 - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`) 349 - glog (from `../node_modules/react-native/third-party-podspecs/glog.podspec`)
  350 + - Permission-Camera (from `../node_modules/react-native-permissions/ios/Camera.podspec`)
  351 + - Permission-LocationWhenInUse (from `../node_modules/react-native-permissions/ios/LocationWhenInUse.podspec`)
  352 + - Permission-PhotoLibrary (from `../node_modules/react-native-permissions/ios/PhotoLibrary.podspec`)
334 - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`) 353 - RCTRequired (from `../node_modules/react-native/Libraries/RCTRequired`)
335 - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`) 354 - RCTTypeSafety (from `../node_modules/react-native/Libraries/TypeSafety`)
336 - React (from `../node_modules/react-native/`) 355 - React (from `../node_modules/react-native/`)
@@ -342,6 +361,7 @@ DEPENDENCIES: @@ -342,6 +361,7 @@ DEPENDENCIES:
342 - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`) 361 - React-jsi (from `../node_modules/react-native/ReactCommon/jsi`)
343 - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`) 362 - React-jsiexecutor (from `../node_modules/react-native/ReactCommon/jsiexecutor`)
344 - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`) 363 - React-jsinspector (from `../node_modules/react-native/ReactCommon/jsinspector`)
  364 + - react-native-camera (from `../node_modules/react-native-camera`)
345 - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)" 365 - "react-native-netinfo (from `../node_modules/@react-native-community/netinfo`)"
346 - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`) 366 - react-native-safe-area-context (from `../node_modules/react-native-safe-area-context`)
347 - react-native-webview (from `../node_modules/react-native-webview`) 367 - react-native-webview (from `../node_modules/react-native-webview`)
@@ -362,6 +382,7 @@ DEPENDENCIES: @@ -362,6 +382,7 @@ DEPENDENCIES:
362 - RNDeviceInfo (from `../node_modules/react-native-device-info`) 382 - RNDeviceInfo (from `../node_modules/react-native-device-info`)
363 - RNGestureHandler (from `../node_modules/react-native-gesture-handler`) 383 - RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
364 - RNLocalize (from `../node_modules/react-native-localize`) 384 - RNLocalize (from `../node_modules/react-native-localize`)
  385 + - RNPermissions (from `../node_modules/react-native-permissions`)
365 - RNReanimated (from `../node_modules/react-native-reanimated`) 386 - RNReanimated (from `../node_modules/react-native-reanimated`)
366 - RNScreens (from `../node_modules/react-native-screens`) 387 - RNScreens (from `../node_modules/react-native-screens`)
367 - RNVectorIcons (from `../node_modules/react-native-vector-icons`) 388 - RNVectorIcons (from `../node_modules/react-native-vector-icons`)
@@ -393,6 +414,12 @@ EXTERNAL SOURCES: @@ -393,6 +414,12 @@ EXTERNAL SOURCES:
393 :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec" 414 :podspec: "../node_modules/react-native/third-party-podspecs/Folly.podspec"
394 glog: 415 glog:
395 :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec" 416 :podspec: "../node_modules/react-native/third-party-podspecs/glog.podspec"
  417 + Permission-Camera:
  418 + :path: "../node_modules/react-native-permissions/ios/Camera.podspec"
  419 + Permission-LocationWhenInUse:
  420 + :path: "../node_modules/react-native-permissions/ios/LocationWhenInUse.podspec"
  421 + Permission-PhotoLibrary:
  422 + :path: "../node_modules/react-native-permissions/ios/PhotoLibrary.podspec"
396 RCTRequired: 423 RCTRequired:
397 :path: "../node_modules/react-native/Libraries/RCTRequired" 424 :path: "../node_modules/react-native/Libraries/RCTRequired"
398 RCTTypeSafety: 425 RCTTypeSafety:
@@ -411,6 +438,8 @@ EXTERNAL SOURCES: @@ -411,6 +438,8 @@ EXTERNAL SOURCES:
411 :path: "../node_modules/react-native/ReactCommon/jsiexecutor" 438 :path: "../node_modules/react-native/ReactCommon/jsiexecutor"
412 React-jsinspector: 439 React-jsinspector:
413 :path: "../node_modules/react-native/ReactCommon/jsinspector" 440 :path: "../node_modules/react-native/ReactCommon/jsinspector"
  441 + react-native-camera:
  442 + :path: "../node_modules/react-native-camera"
414 react-native-netinfo: 443 react-native-netinfo:
415 :path: "../node_modules/@react-native-community/netinfo" 444 :path: "../node_modules/@react-native-community/netinfo"
416 react-native-safe-area-context: 445 react-native-safe-area-context:
@@ -449,6 +478,8 @@ EXTERNAL SOURCES: @@ -449,6 +478,8 @@ EXTERNAL SOURCES:
449 :path: "../node_modules/react-native-gesture-handler" 478 :path: "../node_modules/react-native-gesture-handler"
450 RNLocalize: 479 RNLocalize:
451 :path: "../node_modules/react-native-localize" 480 :path: "../node_modules/react-native-localize"
  481 + RNPermissions:
  482 + :path: "../node_modules/react-native-permissions"
452 RNReanimated: 483 RNReanimated:
453 :path: "../node_modules/react-native-reanimated" 484 :path: "../node_modules/react-native-reanimated"
454 RNScreens: 485 RNScreens:
@@ -465,16 +496,19 @@ SPEC CHECKSUMS: @@ -465,16 +496,19 @@ SPEC CHECKSUMS:
465 DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2 496 DoubleConversion: 5805e889d232975c086db112ece9ed034df7a0b2
466 FBLazyVector: 95ee3e58937a6052f86b0e32f142388c22fa22c5 497 FBLazyVector: 95ee3e58937a6052f86b0e32f142388c22fa22c5
467 FBReactNativeSpec: 26dd6459299e48cd64eb397c45635e466dba9f45 498 FBReactNativeSpec: 26dd6459299e48cd64eb397c45635e466dba9f45
468 - Flipper: 6c1f484f9a88d30ab3e272800d53688439e50f69 499 + Flipper: 1670db365568191bd123a0c905b834e77ba9e3d3
469 Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41 500 Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
470 - Flipper-Folly: 2de3d03e0acc7064d5e4ed9f730e2f217486f162 501 + Flipper-Folly: c12092ea368353b58e992843a990a3225d4533c3
471 Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6 502 Flipper-Glog: 1dfd6abf1e922806c52ceb8701a3599a79a200a6
472 Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9 503 Flipper-PeerTalk: 116d8f857dc6ef55c7a5a75ea3ceaafe878aadc9
473 - Flipper-RSocket: 1260a31c05c238eabfa9bb8a64e3983049048371 504 + Flipper-RSocket: 64e7431a55835eb953b0bf984ef3b90ae9fdddd7
474 - FlipperKit: 6dc9b8f4ef60d9e5ded7f0264db299c91f18832e 505 + FlipperKit: afd4259ef9eadeeb2d30250b37d95cb3b6b97a69
475 Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51 506 Folly: 30e7936e1c45c08d884aa59369ed951a8e68cf51
476 glog: 1f3da668190260b06b429bb211bfbee5cd790c28 507 glog: 1f3da668190260b06b429bb211bfbee5cd790c28
477 OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355 508 OpenSSL-Universal: 8b48cc0d10c1b2923617dfe5c178aa9ed2689355
  509 + Permission-Camera: ebdba00e6926aface672cc547b19fa317c3d956e
  510 + Permission-LocationWhenInUse: cfd0d39a1c8ab2e9aeb0a1460800f85f74705404
  511 + Permission-PhotoLibrary: e29736d903e867d278747eb30951528303425f64
478 RCTRequired: e291538a455f5ad1afc2139a4288990be0cadd46 512 RCTRequired: e291538a455f5ad1afc2139a4288990be0cadd46
479 RCTTypeSafety: 8b6237185765dd9a03a3647807e08864105b1f95 513 RCTTypeSafety: 8b6237185765dd9a03a3647807e08864105b1f95
480 React: 7b33e15fab929c47ac9c3c94c409258b13cfe452 514 React: 7b33e15fab929c47ac9c3c94c409258b13cfe452
@@ -484,6 +518,7 @@ SPEC CHECKSUMS: @@ -484,6 +518,7 @@ SPEC CHECKSUMS:
484 React-jsi: 600d8e42510c3254fd2abd702f4b9d3f598d8f52 518 React-jsi: 600d8e42510c3254fd2abd702f4b9d3f598d8f52
485 React-jsiexecutor: e9698dee4fd43ceb44832baf15d5745f455b0157 519 React-jsiexecutor: e9698dee4fd43ceb44832baf15d5745f455b0157
486 React-jsinspector: f74a62727e5604119abd4a1eda52c0a12144bcd5 520 React-jsinspector: f74a62727e5604119abd4a1eda52c0a12144bcd5
  521 + react-native-camera: 1b52abea404d04e040edb3e74b7c5523c01a3089
487 react-native-netinfo: 4fa023c153d582aeae8435df95c9a975c5986449 522 react-native-netinfo: 4fa023c153d582aeae8435df95c9a975c5986449
488 react-native-safe-area-context: e200d4433aba6b7e60b52da5f37af11f7a0b0392 523 react-native-safe-area-context: e200d4433aba6b7e60b52da5f37af11f7a0b0392
489 react-native-webview: 0633fd7861a9bd7a80bacaee7da763c3afc248fa 524 react-native-webview: 0633fd7861a9bd7a80bacaee7da763c3afc248fa
@@ -503,12 +538,13 @@ SPEC CHECKSUMS: @@ -503,12 +538,13 @@ SPEC CHECKSUMS:
503 RNDeviceInfo: 6a3d16fce033f6979c4a6a41e62244d183e8c765 538 RNDeviceInfo: 6a3d16fce033f6979c4a6a41e62244d183e8c765
504 RNGestureHandler: 8f09cd560f8d533eb36da5a6c5a843af9f056b38 539 RNGestureHandler: 8f09cd560f8d533eb36da5a6c5a843af9f056b38
505 RNLocalize: b6df30cc25ae736d37874f9bce13351db2f56796 540 RNLocalize: b6df30cc25ae736d37874f9bce13351db2f56796
  541 + RNPermissions: a96580116f7894146552e92b000ac30bf1661947
506 RNReanimated: 4e102df74a9674fa943e05f97f3362b6e44d0b48 542 RNReanimated: 4e102df74a9674fa943e05f97f3362b6e44d0b48
507 RNScreens: b5c0e1b2b04512919e78bd3898e144a157ce2363 543 RNScreens: b5c0e1b2b04512919e78bd3898e144a157ce2363
508 RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4 544 RNVectorIcons: 0bb4def82230be1333ddaeee9fcba45f0b288ed4
509 Yoga: 50fb6eb13d2152e7363293ff603385db380815b1 545 Yoga: 50fb6eb13d2152e7363293ff603385db380815b1
510 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a 546 YogaKit: f782866e155069a2cca2517aafea43200b01fd5a
511 547
512 -PODFILE CHECKSUM: be6f1c915e19e27904229555c28ac7d81a2caf5a 548 +PODFILE CHECKSUM: e597d8e8194d3baf3ffcf09c60685a36eaabf88f
513 549
514 COCOAPODS: 1.9.1 550 COCOAPODS: 1.9.1
  1 +/*
  2 + InfoPlist.strings
  3 + NGPlay
  4 +
  5 + Created by Phecda on 2020/4/16.
  6 +
  7 +*/
  8 +"NSCameraUsageDescription" = "Use your camera to take a photo or scan codes";
  9 +"NSLocationWhenInUseUsageDescription" = "Use your location to check security";
  10 +"NSPhotoLibraryAddUsageDescription" = "Add photos to your photo library";
  11 +"NSPhotoLibraryUsageDescription" = "Read images from your photo library to set a avatar or scan codes";
  1 +/*
  2 + InfoPlist.strings
  3 + NGPlay
  4 +
  5 + Created by Phecda on 2020/4/16.
  6 +
  7 +*/
  8 +"NSCameraUsageDescription" = "拍照或扫码功能需要使用相机";
  9 +"NSLocationWhenInUseUsageDescription" = "为保证安全,需要定位";
  10 +"NSPhotoLibraryAddUsageDescription" = "向照片图库中添加照片";
  11 +"NSPhotoLibraryUsageDescription" = "诸如扫码、设置头像等功能需要从照片图库中读取图片";
@@ -25,11 +25,13 @@ @@ -25,11 +25,13 @@
25 "immer": "^6.0.3", 25 "immer": "^6.0.3",
26 "react": "16.11.0", 26 "react": "16.11.0",
27 "react-native": "0.62.1", 27 "react-native": "0.62.1",
  28 + "react-native-camera": "^3.23.1",
28 "react-native-dark-mode": "^0.2.2", 29 "react-native-dark-mode": "^0.2.2",
29 "react-native-device-info": "^5.5.4", 30 "react-native-device-info": "^5.5.4",
30 "react-native-elements": "^1.2.7", 31 "react-native-elements": "^1.2.7",
31 "react-native-gesture-handler": "^1.6.1", 32 "react-native-gesture-handler": "^1.6.1",
32 "react-native-localize": "^1.4.0", 33 "react-native-localize": "^1.4.0",
  34 + "react-native-permissions": "^2.1.2",
33 "react-native-progress": "^4.1.2", 35 "react-native-progress": "^4.1.2",
34 "react-native-reanimated": "^1.7.1", 36 "react-native-reanimated": "^1.7.1",
35 "react-native-safe-area-context": "^0.7.3", 37 "react-native-safe-area-context": "^0.7.3",
@@ -41,6 +41,7 @@ export const ListItem = ({ @@ -41,6 +41,7 @@ export const ListItem = ({
41 subtitleStyle, 41 subtitleStyle,
42 rightTitleStyle, 42 rightTitleStyle,
43 rightSubtitleStyle, 43 rightSubtitleStyle,
  44 + chevron,
44 ...props 45 ...props
45 }: ListItemProps) => { 46 }: ListItemProps) => {
46 const styles = useDynamicStyleSheet(dynamicStyles); 47 const styles = useDynamicStyleSheet(dynamicStyles);
@@ -51,6 +52,7 @@ export const ListItem = ({ @@ -51,6 +52,7 @@ export const ListItem = ({
51 subtitleStyle={[styles.subtitleStyle, subtitleStyle]} 52 subtitleStyle={[styles.subtitleStyle, subtitleStyle]}
52 rightTitleStyle={[styles.rightTitleStyle, rightTitleStyle]} 53 rightTitleStyle={[styles.rightTitleStyle, rightTitleStyle]}
53 rightSubtitleStyle={[styles.rightSubtitleStyle, rightSubtitleStyle]} 54 rightSubtitleStyle={[styles.rightSubtitleStyle, rightSubtitleStyle]}
  55 + chevron={chevron ?? !!props.onPress}
54 {...props} 56 {...props}
55 /> 57 />
56 ); 58 );
@@ -20,6 +20,7 @@ import WebviewScreen from './WebviewScreen'; @@ -20,6 +20,7 @@ import WebviewScreen from './WebviewScreen';
20 import { Platform } from 'react-native'; 20 import { Platform } from 'react-native';
21 import RNLocalize from './RNLocalize'; 21 import RNLocalize from './RNLocalize';
22 import { useI18nStrings } from '../i18n'; 22 import { useI18nStrings } from '../i18n';
  23 +import CameraScreen from './CameraScreen';
23 24
24 const MainTab = createBottomTabNavigator<MainTabParamList>(); 25 const MainTab = createBottomTabNavigator<MainTabParamList>();
25 26
@@ -111,6 +112,7 @@ const Container = () => { @@ -111,6 +112,7 @@ const Container = () => {
111 })} 112 })}
112 /> 113 />
113 <MainStack.Screen name="RNLocalize" component={RNLocalize} /> 114 <MainStack.Screen name="RNLocalize" component={RNLocalize} />
  115 + <MainStack.Screen name="RNCamera" component={CameraScreen} />
114 </MainStack.Navigator> 116 </MainStack.Navigator>
115 </NavigationContainer> 117 </NavigationContainer>
116 ); 118 );
  1 +import React, { useRef, useCallback, useState } from 'react';
  2 +import {
  3 + RNCamera,
  4 + TakePictureResponse,
  5 + RNCameraProps,
  6 +} from 'react-native-camera';
  7 +import { BGScroll, ListItem, Card, Divider } from '../component/View';
  8 +import { useSwitch, useToggle } from '@huse/boolean';
  9 +import {
  10 + Image,
  11 + useWindowDimensions,
  12 + View,
  13 + SafeAreaView,
  14 + ActivityIndicator,
  15 + Modal,
  16 +} from 'react-native';
  17 +import { Icon } from 'react-native-elements';
  18 +import {
  19 + DynamicStyleSheet,
  20 + useDynamicStyleSheet,
  21 +} from 'react-native-dark-mode';
  22 +import { colorPreset } from '../design';
  23 +
  24 +const dynamicStyles = new DynamicStyleSheet({
  25 + cameraContainerPortrait: {
  26 + flex: 1,
  27 + backgroundColor: colorPreset.backgroundColor.primary,
  28 + },
  29 + topBar: { flex: 0.5 },
  30 + bottomBar: {
  31 + justifyContent: 'space-evenly',
  32 + alignItems: 'center',
  33 + flex: 1,
  34 + },
  35 + loadingButton: {
  36 + width: 52,
  37 + height: 52,
  38 + borderRadius: 28,
  39 + backgroundColor: 'white',
  40 + margin: 7,
  41 + justifyContent: 'center',
  42 + alignItems: 'center',
  43 + },
  44 + photoResult: {
  45 + flex: 1,
  46 + height: 240,
  47 + resizeMode: 'contain',
  48 + margin: 16,
  49 + },
  50 +});
  51 +
  52 +const CameraModal = ({
  53 + visible,
  54 + onCancel,
  55 + onTakenPicture,
  56 +}: {
  57 + onCancel: () => void;
  58 + visible: boolean;
  59 + onTakenPicture: (picture: TakePictureResponse) => void;
  60 +}) => {
  61 + const styles = useDynamicStyleSheet(dynamicStyles);
  62 +
  63 + const camera = useRef<RNCamera>(null);
  64 + const [loading, toggleLoading] = useToggle(false);
  65 + const [isBackCamera, toggleCameraType] = useToggle(true);
  66 + const { width, height } = useWindowDimensions();
  67 + const inPortrait = width <= height;
  68 + const previewDimension = inPortrait
  69 + ? { width, height: (width * 4) / 3 }
  70 + : { height, width: (height * 4) / 3 };
  71 +
  72 + const bottomDirection = inPortrait ? 'row' : 'column';
  73 + const containerDirection = inPortrait ? 'column' : 'row';
  74 +
  75 + const onShot = useCallback(async () => {
  76 + if (camera.current) {
  77 + toggleLoading();
  78 + const result = await camera.current.takePictureAsync({
  79 + base64: true,
  80 + quality: 0.8,
  81 + pauseAfterCapture: true,
  82 + doNotSave: true,
  83 + });
  84 + toggleLoading();
  85 + onTakenPicture(result);
  86 + }
  87 + }, [onTakenPicture, toggleLoading]);
  88 +
  89 + return (
  90 + <Modal visible={visible} onRequestClose={onCancel} animationType="slide">
  91 + <View
  92 + style={[
  93 + styles.cameraContainerPortrait,
  94 + { flexDirection: containerDirection },
  95 + ]}
  96 + >
  97 + <SafeAreaView style={styles.topBar} />
  98 + <RNCamera
  99 + ref={camera}
  100 + type={isBackCamera ? 'back' : 'front'}
  101 + style={previewDimension}
  102 + captureAudio={false}
  103 + />
  104 + <SafeAreaView
  105 + style={[
  106 + styles.bottomBar,
  107 + {
  108 + flexDirection: bottomDirection,
  109 + },
  110 + ]}
  111 + >
  112 + <Icon name="close" raised onPress={onCancel} />
  113 + {loading ? (
  114 + <View style={styles.loadingButton}>
  115 + <ActivityIndicator />
  116 + </View>
  117 + ) : (
  118 + <Icon name="camera" raised onPress={onShot} />
  119 + )}
  120 + <Icon
  121 + type="ionicon"
  122 + name="ios-reverse-camera"
  123 + raised
  124 + onPress={toggleCameraType}
  125 + />
  126 + </SafeAreaView>
  127 + </View>
  128 + </Modal>
  129 + );
  130 +};
  131 +
  132 +type ParamsOf<T extends (...args: any[]) => any> = T extends (
  133 + ...args: infer U
  134 +) => any
  135 + ? U
  136 + : never;
  137 +
  138 +const Scanner = ({
  139 + visible,
  140 + onCancel,
  141 + onScanCode,
  142 +}: {
  143 + visible: boolean;
  144 + onCancel: () => void;
  145 + onScanCode: (
  146 + ...args: ParamsOf<Required<RNCameraProps>['onBarCodeRead']>
  147 + ) => void;
  148 +}) => {
  149 + const styles = useDynamicStyleSheet(dynamicStyles);
  150 +
  151 + const camera = useRef<RNCamera>(null);
  152 + const { width, height } = useWindowDimensions();
  153 + const inPortrait = width <= height;
  154 + const previewDimension = inPortrait
  155 + ? { width, height: (width * 4) / 3 }
  156 + : { height, width: (height * 4) / 3 };
  157 +
  158 + const bottomDirection = inPortrait ? 'row' : 'column';
  159 + const containerDirection = inPortrait ? 'column' : 'row';
  160 + return (
  161 + <Modal visible={visible} onRequestClose={onCancel} animationType="slide">
  162 + <View
  163 + style={[
  164 + styles.cameraContainerPortrait,
  165 + { flexDirection: containerDirection },
  166 + ]}
  167 + >
  168 + <SafeAreaView style={styles.topBar} />
  169 + <RNCamera
  170 + ref={camera}
  171 + style={previewDimension}
  172 + captureAudio={false}
  173 + onBarCodeRead={onScanCode}
  174 + />
  175 + <SafeAreaView
  176 + style={[
  177 + styles.bottomBar,
  178 + {
  179 + flexDirection: bottomDirection,
  180 + },
  181 + ]}
  182 + >
  183 + <Icon name="close" raised onPress={onCancel} />
  184 + </SafeAreaView>
  185 + </View>
  186 + </Modal>
  187 + );
  188 +};
  189 +
  190 +const CameraScreen = () => {
  191 + const styles = useDynamicStyleSheet(dynamicStyles);
  192 + const [cameraVisible, openCamera, closeCamera] = useSwitch(false);
  193 + const [scannerVisible, openScanner, closeScanner] = useSwitch(false);
  194 + const [tempPicture, setTempPicture] = useState<TakePictureResponse>();
  195 + const [codeData, setCodeData] = useState<string>();
  196 + const [codeType, setCodeType] = useState<string>();
  197 + return (
  198 + <>
  199 + <BGScroll>
  200 + <Card round>
  201 + <ListItem title="Camera Modal" onPress={openCamera} />
  202 + {tempPicture && <Divider />}
  203 + {tempPicture && (
  204 + <Image
  205 + style={styles.photoResult}
  206 + source={{
  207 + uri: `data:image/jpeg;base64,${tempPicture.base64}`,
  208 + }}
  209 + />
  210 + )}
  211 + </Card>
  212 + <Card round>
  213 + <ListItem title="Scanner Modal" onPress={openScanner} />
  214 + <Divider />
  215 + <ListItem title="data" rightTitle={codeData} />
  216 + <Divider />
  217 + <ListItem title="type" rightTitle={codeType} />
  218 + </Card>
  219 + </BGScroll>
  220 + <CameraModal
  221 + visible={cameraVisible}
  222 + onTakenPicture={(picture) => {
  223 + setTempPicture(picture);
  224 + closeCamera();
  225 + }}
  226 + onCancel={closeCamera}
  227 + />
  228 + <Scanner
  229 + visible={scannerVisible}
  230 + onCancel={closeScanner}
  231 + onScanCode={(e) => {
  232 + setCodeData(e.data);
  233 + setCodeType(e.type);
  234 + closeScanner();
  235 + }}
  236 + />
  237 + </>
  238 + );
  239 +};
  240 +
  241 +export default CameraScreen;
@@ -84,6 +84,12 @@ const SystemInfo = ({ @@ -84,6 +84,12 @@ const SystemInfo = ({
84 rightTitle={strings.name} 84 rightTitle={strings.name}
85 chevron 85 chevron
86 /> 86 />
  87 + <Divider />
  88 + <ListItem
  89 + title={'Camera'}
  90 + onPress={() => navigation.navigate('RNCamera')}
  91 + chevron
  92 + />
87 </Card> 93 </Card>
88 </BGScroll> 94 </BGScroll>
89 ); 95 );
@@ -12,6 +12,7 @@ export type MainStackParamList = { @@ -12,6 +12,7 @@ export type MainStackParamList = {
12 RNDeviceInfoList: undefined; 12 RNDeviceInfoList: undefined;
13 WebviewScreen: { uri: string } | undefined; 13 WebviewScreen: { uri: string } | undefined;
14 RNLocalize: undefined; 14 RNLocalize: undefined;
  15 + RNCamera: undefined;
15 }; 16 };
16 17
17 export type MainTabScreenProps<RouteName extends keyof MainTabParamList> = { 18 export type MainTabScreenProps<RouteName extends keyof MainTabParamList> = {
@@ -6880,6 +6880,13 @@ react-is@^16.12.0, react-is@^16.13.0, react-is@^16.7.0, react-is@^16.8.1, react- @@ -6880,6 +6880,13 @@ react-is@^16.12.0, react-is@^16.13.0, react-is@^16.7.0, react-is@^16.8.1, react-
6880 resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" 6880 resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4"
6881 integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ= 6881 integrity sha1-eJcppNw23imZ3BVt1sHZwYzqVqQ=
6882 6882
  6883 +react-native-camera@^3.23.1:
  6884 + version "3.23.1"
  6885 + resolved "https://registry.npm.taobao.org/react-native-camera/download/react-native-camera-3.23.1.tgz#fb6fe52f8a357852de6dcd81d0d187cd632dc7dd"
  6886 + integrity sha1-+2/lL4o1eFLebc2B0NGHzWMtx90=
  6887 + dependencies:
  6888 + prop-types "^15.6.2"
  6889 +
6883 react-native-dark-mode@^0.2.2: 6890 react-native-dark-mode@^0.2.2:
6884 version "0.2.2" 6891 version "0.2.2"
6885 resolved "https://registry.npm.taobao.org/react-native-dark-mode/download/react-native-dark-mode-0.2.2.tgz#4faa335e36330bfca832ba8b3d2bd84c7b880381" 6892 resolved "https://registry.npm.taobao.org/react-native-dark-mode/download/react-native-dark-mode-0.2.2.tgz#4faa335e36330bfca832ba8b3d2bd84c7b880381"
@@ -6930,6 +6937,11 @@ react-native-localize@^1.4.0: @@ -6930,6 +6937,11 @@ react-native-localize@^1.4.0:
6930 resolved "https://registry.npm.taobao.org/react-native-localize/download/react-native-localize-1.4.0.tgz#4653596d066d0941c48f5404dc1c0d08b6950443" 6937 resolved "https://registry.npm.taobao.org/react-native-localize/download/react-native-localize-1.4.0.tgz#4653596d066d0941c48f5404dc1c0d08b6950443"
6931 integrity sha1-RlNZbQZtCUHEj1QE3BwNCLaVBEM= 6938 integrity sha1-RlNZbQZtCUHEj1QE3BwNCLaVBEM=
6932 6939
  6940 +react-native-permissions@^2.1.2:
  6941 + version "2.1.2"
  6942 + resolved "https://registry.npm.taobao.org/react-native-permissions/download/react-native-permissions-2.1.2.tgz#14f30a6cfa0851ecb210d7eadcc590f8823c8585"
  6943 + integrity sha1-FPMKbPoIUeyyENfq3MWQ+II8hYU=
  6944 +
6933 react-native-progress@^4.1.2: 6945 react-native-progress@^4.1.2:
6934 version "4.1.2" 6946 version "4.1.2"
6935 resolved "https://registry.npm.taobao.org/react-native-progress/download/react-native-progress-4.1.2.tgz#ffb2264ddfeba409c730e36a9791bb7bbe07a00d" 6947 resolved "https://registry.npm.taobao.org/react-native-progress/download/react-native-progress-4.1.2.tgz#ffb2264ddfeba409c730e36a9791bb7bbe07a00d"