Comments (23)
Just took a look at Apple's doc of Privacy manifest files and I don't feel like RNVC needs that.
In a nut shell that manifest is for libs that collects data about the person using apps, which RNVC apparently is not capable of.
The file system API stuff is about reading file info for arbitrary file and system disk space, etc, RNVC mostly just insert image/video into the cache or camera roll which, as I understand, has nothing to do with the user's privacy.
from react-native-vision-camera.
Well,
VC
doesn't collect any data without the app. This confuses me. Why can't we describe it in one place and be done with it?
Some SDKs contain proprietary codes and do shady stuff in the background without the developer of the App even knowing.
Probably Apple want to tight that end too, so they can be clear who is there to blame.
from react-native-vision-camera.
We're using expo(v50.0.17) + react-native-vision-camera(v4.0.1), here's our result:
- do nothing: after upload to app connect, will receive an email about "NSLocationWhenInUseUsageDescription" privacy not explaining clearly
- add
enableLocation: false
in app.config.js, also got the warning email - use
yarn patch
to modifyVisionCamera.podspec
directly, not receiving any warning email. Hope that is helpful.
patch file
diff --git a/VisionCamera.podspec b/VisionCamera.podspec
index 23ddf8658abd2526e9c8f99fa511cb94e3646bf4..c41aa49808544026a62c20efb993b7e735465045 100644
--- a/VisionCamera.podspec
+++ b/VisionCamera.podspec
@@ -6,7 +6,7 @@ nodeModules = File.join(File.dirname(`cd "#{Pod::Config.instance.installation_ro
Pod::UI.puts "[VisionCamera] Thank you for using VisionCamera β€οΈ"
-enableLocation = true
+enableLocation = false
if defined?($VCEnableLocation)
Pod::UI.puts "[VisionCamera] $VCEnableLocation is set to #{$VCEnableLocation}!"
enableLocation = $VCEnableLocation
@@ -14,7 +14,7 @@ else
Pod::UI.puts "[VisionCamera] $VCEnableLocation is not set, enabling CLLocation APIs by default..."
end
-enableFrameProcessors = true
+enableFrameProcessors = false
if defined?($VCEnableFrameProcessors)
Pod::UI.puts "[VisionCamera] $VCEnableFrameProcessors is set to #{$VCEnableFrameProcessors}!"
enableFrameProcessors = $VCEnableFrameProcessors
from react-native-vision-camera.
@mrousavy I understand that typescript works if you use "withVisionCamera" plugin. But if you add the plugin through Expo via:
{
"name": "my app",
"plugins": [
[
"react-native-vision-camera",
{
// ...
"enableLocation": false,
}
]
]
}
There aren't typescript hint or error helpers, right? I know this isn't the issue to talk about this. I would be happy to open a new issue or something else in order to help. I just want to help because if people use 4.0.1 from NPM and follows the documentation will face the same issue since they are out of sync. Current documentation is for the main branch not for the release on NPM, right? If I can do anything else to help just tell me. Thank you for your time.
from react-native-vision-camera.
I don't know.
from react-native-vision-camera.
RN v0.73.7 added a new PrivacyInfo.xcprivacy
file to the ios directory. All libs and SDKs need to have privacy manifest as far as I can tell. For example, Sentry added one to their SDK. I think RNVC needs this kind of manifest file because it uses file system APIs and such.
Official Apple documentation is here:
https://developer.apple.com/documentation/bundleresources/privacy_manifest_files
from react-native-vision-camera.
I see, well if someone contributes / submits a PR for that we can take it from there
from react-native-vision-camera.
Aren't photo and video files from the camera considered user data? It is either that, or we have to specify the usage of it. It has to be either in the SDK or the project itself. It makes more sense to have it in the project itself as the usage could change from app to app.
from react-native-vision-camera.
Aren't photo and video files from the camera considered user data?
did you find anything about that in the documentation of the privacy manifest?
Thanks for taking a look @zzz08900 - I also don't think we need it.
VisionCamera only writes files, and captures from the camera (which is already declared as a permission in Info.plist/AndroidManifest.xml), but we'll see.
from react-native-vision-camera.
Well kinda. I am not sure. We know VC
can use location data too on top of video, photo, and audio. This link describes those:
https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests
Well, VC
doesn't collect any data without the app. This confuses me. Why can't we describe it in one place and be done with it?
from react-native-vision-camera.
ah yea;
from react-native-vision-camera.
So if I want to make a PR, I only need to add this privacy file to package/ios
, right? pretty new to the whole contribution stuff.
from react-native-vision-camera.
I'm sorry I am not sure if this works, I have not worked with the privacy files at all. But if you tried this on your end by just adding that file to the react-native-vision-camera node modules package locally and it works, then yes, just add it here to package/ios
, and also add it in the files section in package.json
so it gets published to npm.
from react-native-vision-camera.
okay, I'll do it on my project first and see what Apple says about it, if all is well, I'll make a PR like you said. Thank you
from react-native-vision-camera.
Maybe its a little late but from what I understand, you only need to declare that manifest if you are trying to "collect" location data, which should mean read location data, store it on the phone or send it to a server for later processing.
Simply write location data to photo/video's meta info is not considered as "collecting location data" as I see it.
Well I'm kinda stuck on V2 now so I'll try publish new versions to App Store without the privacy manifest and I'll let you guys know if Apple does not approve my new versions.
from react-native-vision-camera.
Thank you, but starting May 1st Apple will reject all apps that don't have privacy manifest files. That is why rn v0.73.7 adds this manifest file when you install pods
from react-native-vision-camera.
Thank you, but starting May 1st Apple will reject all apps that don't have privacy manifest files.
Yeah sure I'll update my app to include that manifest, along with other "suspicious" libs including RNFS and react-native-device-info.
I ran a scan of RNVC V2 using https://github.com/Wooder/ios_17_required_reason_api_scanner
It didn't find anything.
Now I have all declaration of use of required reason APIs (at least I covered everything mentioned by Apple in the mail) in one of my apps.
Sad we have to wait until May 1st to see how this goes.
from react-native-vision-camera.
Quick update. We sent an update to App Store Connect and it did get approved. Not sure if this means no manifest file is required or if they just haven't caught up. I'll try to look into a bit more this weekend if I can.
from react-native-vision-camera.
The change in Podfile has nothing to do with NSLocationWhenInUseUsageDescription
, so this is just coincidence.
NSLocationWhenInUseUsageDescription
is set by your app in Info.plist
. Maybe you just didn't put an explanation in there.
from react-native-vision-camera.
I'm also seeing the same issue, receiving apple NSLocationWhenInUseUsageDescription
everytime even if I have "enableLocation": false
. The thing is, I even tried to have have "enableLocation": false
in my app.config.js
and also <Camera enableLocation={true} />
and it is still working. Clearly something in app.config.js
plugin configuration is not working. @chunghe @mrousavy I just saw that there was a commit only 2 days ago that changed "enableLocationPermission" into "enableLocation" (f8b40fd). The docs are saying to use "enableLocation" (https://react-native-vision-camera.com/docs/guides/location#enable-or-disable-location-apis) so maybe this is the explanation of why it is throwing issues on Apple side everytime?
from react-native-vision-camera.
Yes. It was using the wrong name.
If you used TypeScript you should've noticed the issue on your end, but apparently not everyone uses TS.
It's fixed on main now.
from react-native-vision-camera.
I'm using typescript and using app.config.ts
with version 4.0.1 and when I type "enable" it isn't showing the hint or error for "enableLocation", thats why I was trying to follow blindly the docs. On the component side there wasn't any hint or error either. I don't see how we can get noticed of this before building. Thank you for confirming the issue.
from react-native-vision-camera.
Ah gotcha yea through JSON it might not work. Maybe app.config.js? I don't know.
Either way will release an update soon
from react-native-vision-camera.
Related Issues (20)
- π [iOS] Did someone manage to get to reasonable FPS with ML Kit Pose Detection (native frame processor plugin)? HOT 2
- π Lifecycle methods for native frame processors HOT 5
- π How to access GPS location tags in photo metadata? HOT 4
- π takePhoto() function working very slowly on Android HOT 3
- π§ A failure occurred while executing org.jetbrains.kotlin.compilerRunner.GradleCompilerRunnerWithWorkers$GradleKotlinCompilerWorkAction HOT 12
- π How does RNVC interact with OS camera settings? HOT 1
- π Is there a migration guide from V3 to V4? HOT 2
- π§ :react-native-vision-camera:compileDebugKotlin FAILED HOT 2
- Torch does not work on CodeScannerπ HOT 3
- π Hello, Which version of react-native-vision-camera supports RN 0.67? HOT 1
- Build failed with face-detector pluginπ§ HOT 2
- Torch does not work on CodeScannerπ HOT 1
- How to translate preview point to screen point with resizeMode contain? HOT 1
- π Error when switching front camera on iPhone HOT 1
- π On some Android devices, the camera image is very dark and almost invisible HOT 1
- π Different metadata frame count and decoded frame count HOT 1
- π Camera preview blank screen when using Skia Frame Processors HOT 9
- π Camera Preview is Stretched on ShadowLens App on a Samsung J6 (Android 10)
- β¨ How can I save the video recording when the app state changes to "background" or "inactive". HOT 1
- π Mirror issue with front camera HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. πππ
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from react-native-vision-camera.