I would expect this info to come from plugin.xml and config.xml. I haven’t 
looked at Android innards in a long time, but doesn’t this just mirror their 
intents? Play store tells users the capabilities of each app, and this is all 
pulled together from the plugins ..

> On Oct 28, 2023, at 4:00 AM, Norman Breau <nor...@breautek.com> wrote:
> 
> Based on 
> https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_use_of_required_reason_api?language=objc
> 
> I don't think there is localization involved. It looks like you supply two 
> pre-defined constants,
> and whichs refers to an API or a set of APIs and a reason. So you don't 
> describe the reason
> yourself.
> 
> This will probably make it really easy to manage and merge manually tbh but I 
> do agree
> that we should avoid using edit/config-file directives to do this. The app's 
> xcprivacy can
> probably be easy to built up on prepare.
> 
> I like Erisu's idea but I do find it a bit odd to put in in package.json when 
> plugin and app configurations still for the most part lives in 
> plugin.xml/config.xml.
> 
>> On 2023-10-28 4:44 a.m., Niklas Merz wrote:
>> I did not dig deep into the documentation and the details about that but
>> I would like to add two things to consider:
>> 
>> 1. Internationalization: Are there any strings that are shown to the
>> user like "NSLocationAlwaysAndWhenInUseUsageDescription"? For this we
>> had no simple way to show that in the users language. Looks like there a
>> predefined types [1] so this should be no issue.
>> 
>> 2. The app developer should be able to overwrite the plugins values. If
>> a plugin defines APIs and purposes the app developer might want to
>> overwrite the default values because they are using the API for just a
>> specific purpose or they are using only a subset of the APIs the plugin
>> implements.
>> 
>> Erisus idea sounds like a good start. edit-config will cause trouble
>> really quickly I suppose.
>> 
>> 
>> [1]
>> https://developer.apple.com/documentation/bundleresources/privacy_manifest_files/describing_data_use_in_privacy_manifests#4250556
>> 
>>> On October 28, 2023, Erisu <er...@apache.org> wrote:
>>> IMO, I think we should store the information in "package.json" and
>>> build up the data before injecting into plist.
>>> 
>>> I personally think we should avoid "edit-config" or "config-file" at
>>> all costs. It has always been error prone and a pain-point for us.
>>> 
>>> The structure below is just an idea. This structure can be added to
>>> both plugins' and app's "package.json".
>>> 
>>> ==
>>> {
>>>  "cordova": {
>>>  "id": "cordova-plugin-statusbar",
>>>  "platforms": [
>>>  "android",
>>>  "ios"
>>>  ],
>>>  "ios-privacy": {
>>>  "NSPrivacyCollectedDataTypes": ["..."],
>>>  "NSPrivacyAccessedAPITypes": ["..."],
>>>  "NSPrivacyTracking": true
>>>  }
>>>  }
>>> }
>>> ==
>>> 
>>> During the "cordova prepare" step, we would extract all "ios-privacy"
>>> settings.
>>> 
>>> We would merge together all data sets.
>>> 
>>> Filter the "NSPrivacyCollectedDataTypes" and
>>> "NSPrivacyAccessedAPITypes" to extract out the unique items.
>>> 
>>> And if any one plugin or the app has defined "NSPrivacyTracking" as
>>> "true", it remains "true".
>>> 
>>> The reason we would allow the same structure to be defined in the
>>> app's "package.json" is so that app developers could manually review
>>> and define these values for the plugins that are unmaintained.
>>> 
>>> 
>>>> On Oct 28, 2023, at 12:15, Darryl Pogue <dvpdin...@gmail.com> wrote:
>>>>  I looked into this a bit yesterday, and think there are a few ways
>>> we might
>>>> be able to handle this (none of them ideal).
>>>>  For background, Apple is requiring apps to include a xcprivacy plist
>>> file
>>>> that has declarations about what privacy-impacting APIs they use
>>> (i.e.,
>>>> APIs that could be used for fingerprinting) and what data sharing
>>> and
>>>> tracking they do.
>>>> For apps that consume 3rd party SDKs, Apple is making it possible
>>> for the
>>>> SDK providers to embed their xcprivacy plist as part of a framework
>>> bundle.
>>>> Apps that use the framework will inherit the privacy declarations of
>>> their
>>>> SDK frameworks in addition to their own declarations.
>>>>  Separately, but at the same time, Apple is introducing code signing
>>> to
>>>> framework bundles to help app developers better trust that their
>>> frameworks
>>>> came from trusted/consistent sources.
>>>>    What does this mean for Cordova?
>>>> --------------------------------
>>>>  If we take the simplest interpretation: nothing. Cordova is not
>>> distributed
>>>> as a framework or SDK bundle, it is source code that's included in
>>> the app
>>>> (both CordovaLib and any installed plugins). Therefore, Cordova
>>> itself
>>>> technically doesn't need to provide any privacy plists and it's up
>>> to the
>>>> app developer to handle all the declarations based on how they're
>>> using
>>>> Cordova.
>>>>  However, that kinda sucks for app developers, who might not know if
>>> a
>>>> particular plugin uses privacy-impacting APIs (such as
>>> NSUserDefaults, or
>>>> file system access). The problem for us is that because plugins are
>>> not
>>>> distributed as framework bundles, we cannot provide xcprivacy plist
>>> files
>>>> for each plugin and rely on Apple automatically merging them.
>>>>    Suggestions for now
>>>> -------------------
>>>>  1. Add a blank PrivacyInfo.xcprivacy plist file to the Cordova iOS
>>> template
>>>> as a resource.
>>>>  2. Add a (mostly blank, but accurate) PrivacyInfo.xcprivacy plist
>>> file to
>>>> CordovaLib as a resource, so that it's available for anyone
>>> consuming
>>>> CordovaLib from Swift Package Manager or as a framework (unclear to
>>> me how
>>>> this impacts Cocoapods...)
>>>>  3. I guess our best option right now is to have plugins that need to
>>> make
>>>> declarations do so via <edit-config> into the xcprivacy plist, which
>>> is
>>>> going to be super prone to conflicts if multiple plugins need to add
>>> the
>>>> same declarations :(
>>>>    I really don't like the idea of relying on edit-config/config-file
>>>> injection behaviour to manage this plist, because it's almost
>>> guaranteed to
>>>> cause conflict issues when adding/removing plugins, but I don't have
>>> better
>>>> ideas at the moment. It doesn't seem feasible to change things such
>>> that
>>>> each plugin ends up as a framework bundle, since that would be a
>>> major
>>>> architectural change (although perhaps one that needs to happen?)
>>>>    If we have specific questions for Apple where we need clarification
>>> or
>>>> recommendations, I can reach out to someone there and see if we can
>>> get any
>>>> help.
>>>>  ~Darryl
>>>>  On Fri, Oct 27, 2023 at 8:28 AM Jesse <purplecabb...@gmail.com>
>>> wrote:
>>>>  
>>>>> Has anyone looked at privacy manifests for iOS apps?
>>>>> …
>>>>>>> As you may know, in June, Apple announced new features to help
>>> users
>>>>> understand developers’ privacy and data collection and sharing
>>> practices.
>>>>> These new features include privacy manifests and signatures, which
>>> we
>>>>> encourage all third-party SDKs to adopt to provide transparency to
>>> users
>>>>> and help secure the software supply chain. Third-party SDKs that
>>> impact
>>>>> user privacy will be expected to include a privacy manifest and
>>> signature,
>>>>> and starting in Spring 2024, new and updated apps that include
>>> these
>>>>> third-party SDKs will need to include their manifest and signature
>>> to
>>>>> submit to the App Store
>>>>>    
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
>>> For additional commands, e-mail: dev-h...@cordova.apache.org
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
> For additional commands, e-mail: dev-h...@cordova.apache.org
> 

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cordova.apache.org
For additional commands, e-mail: dev-h...@cordova.apache.org

Reply via email to