Add entry to iOS .plist file via Cordova config.xml

后端 未结 15 1331
日久生厌
日久生厌 2020-11-28 21:41

I am new to the Cordova CLI.

I need to perform the following steps programmatically via Cordova.

  1. In the project .plist add a new row
  2. Enter th
相关标签:
15条回答
  • 2020-11-28 22:14

    I have used this plugin to solve the problem, maybe it can help you :

    https://www.npmjs.com/package/cordova-plugin-queries-schemes

    0 讨论(0)
  • 2020-11-28 22:16

    I really like @james's solution using a Cordova hook. However, there are two issues. The docs state:

    • "we highly recommend writing your hooks using Node.js"
    • "/hooks directory is considered deprecated in favor of the hook elements in config.xml"

    Here's a Node.js implementation using the plist NPM package:

    var fs    = require('fs');     // nodejs.org/api/fs.html
    var plist = require('plist');  // www.npmjs.com/package/plist
    
    var FILEPATH = 'platforms/ios/.../...-Info.plist';
    
    module.exports = function (context) {
    
        var xml = fs.readFileSync(FILEPATH, 'utf8');
        var obj = plist.parse(xml);
    
        obj.GDLibraryMode = 'GDEnterpriseSimulation';
    
        xml = plist.build(obj);
        fs.writeFileSync(FILEPATH, xml, { encoding: 'utf8' });
    
    };
    

    Of all the hook types provided by Cordova, the relevant ones for your situation are:

    • after_prepare
    • before_compile

    Choose a hook type, and then add the hook to your config.xml file:

    <platform name="ios">
        <hook type="after_prepare" src="scripts/my-hook.js" />
    </platform>
    
    0 讨论(0)
  • 2020-11-28 22:17

    These are the steps I ended up doing to enable my application to share files through itunes between devices.

    1.In your application navigate to your config.xml. Type this piece into your config under the platform tag <platform name="ios">.

     <config-file platform="ios" target="*-Info.plist" parent="UIFileSharingEnabled">
          <true/>
      </config-file>
    

    2. Then go to your command line tool and type: cordova prepare

    1. Uninstall and reinstall your application on your device, and you will see your app appear in itunes for you to share any files between your devices.

    A few things, make sure cordova is up to date, and that you added the platform for ios.

    npm install -g cordova
    

    This command installs cordova.

    cordova platform add ios
    

    This command adds the platform for ios.

    What is happening is when you run the cordova prepare command you are using Apple's Xcode SDK that is generated in the platform/ios folder. There you can see the plist file that is generated for your application, which is labeled as "yourApp-info.plist". There you can see the new key and string produced in the xml layout which looks like this:

     <key>UIFileSharingEnabled</key>
     <true/>
    

    Also word of warning, my company dropped this ionic framework application into my lap a couple weeks ago (with a really short deadline). Everything I am telling you is based on couple weeks of learning. So this may not be the best practice, but I hope it helps someone out.

    Edit

    Link to the docs

    0 讨论(0)
  • 2020-11-28 22:19

    I don't think you can do this via straight config.xml modification. At least, I didn't see any mention of this in the docs: http://cordova.apache.org/docs/en/3.3.0/config_ref_index.md.html

    I think you have to create a plugin, because they can insert plist entries: http://docs.phonegap.com/en/3.3.0/plugin_ref_spec.md.html#Plugin%20Specification

    See the 'config-file element' section. Here's a guess as to what the relevant section of the plugin.xml will look like:

    <platform name="ios">
    <config-file target="*-Info.plist" parent="CFBundleURLTypes">
    <array>
        <dict>
            <key>GDLibraryMode</key>
            <string>GDEnterpriseSimulation</string>
        </dict>
    </array>
    </config-file>
    </platform>
    

    Then you can install the plugin: cordova plugin add <your plugin name or file location>

    0 讨论(0)
  • 2020-11-28 22:21

    I'm using the following in the ionic 3 without any additional plugin or imports and I think this could be helpful for others:

    <platform name="ios">
        <edit-config file="*-Info.plist" mode="merge" target="NSLocationWhenInUseUsageDescription">
            <string>Location is required so we can show you your nearby projects to support.</string>
        </edit-config>
        <edit-config file="*-Info.plist" mode="merge" target="NSCameraUsageDescription">
            <string>Camera accesss required in order to let you select profile picture from camera.</string>
        </edit-config>
        <edit-config file="*-Info.plist" mode="merge" target="NSPhotoLibraryUsageDescription">
            <string>Photo library accesss required in order to let you select profile picture from gallery / library.</string>
        </edit-config>
    </platform>
    
    0 讨论(0)
  • 2020-11-28 22:23

    i faced the same issue few days earlier for my IONIC 4 Project. when i uploaded my IPA, i got this warnings from App Store Connect.

    I tried to fix this issue from the "Config.xml" file. but i didn't find a proper solution for it.

    I fixed this on a different way. I put the value in "XCODE". it's already answered to the below link : NSPhotoLibraryUsageDescription key must be present in Info.plist to use camera roll

    Thanks.

    0 讨论(0)
提交回复
热议问题