Cordova Phonegap IOS App Settings.Bundle Possible?

穿精又带淫゛_ 提交于 2019-11-29 14:04:18

问题


So I'm new to mobile development but I'm close to finishing up my first IOS application using HTML/CSS/JS and Cordova PhoneGap 3. I am trying to allow the user to provide text input through the iPhone's native "Settings" app (gray gear icon). My app will have have its own settings section within the "Settings" app where the user can input a specific IP address, that my app will then use.

What I've found out so far is that I may need to install a PhoneGap plugin and need to add a settings.bundle root.plist file:

https://github.com/phonegap/phonegap-plugins/tree/DEPRECATED/iOS/ApplicationPreferences

Phonegap 3.0 iOS7 ApplicationPreferences Plugin

https://developer.apple.com/library/ios/DOCUMENTATION/Cocoa/Conceptual/UserDefaults/Preferences/Preferences.html

Unfortunately i'm not experienced enough to make due with just this :/ I was hoping a helpful vet with more experience can spell it out a little clearer and point me in the right direction:

  • Do I just take the .h, .m, and .js files and put them in the 'plugins' and 'www' directories respectfully, or do I have to use the commandline 'phonegap local plugin add htttps//github...' command?
    • the commandline option did not work. Is this because the github code is deprecated?
  • How do I "reference the plugin in my app"? is it just adding this extra line to my index.html page's body or is there more to it?: <script type="text/javascript" src="applicationPreferences.js"></script>

Sorry for all the longwinded rookie confusion.. I just for the life of me could not find a easy-to-understand guide on how to do this anywhere online. I'm sure there will be plenty after me that have these same questions so I really appreciate the help. Thanks much.


回答1:


To create a Settings bundle that will work without having to muck in platforms/ios/, create a local plugin in your project.

./src/ios/plugin.xml

<?xml version="1.0" encoding="UTF-8"?>

<plugin xmlns="http://cordova.apache.org/ns/plugins/1.0"
    id="com.example.application.settings"
    version="0.4.2">

    <name>Application Settings</name>
    <description>My Application's Default Settings</description>
    <license>Proprietary</license>
    <keywords>preferences, settings, default</keywords>
    <repo>https://github.com/</repo>

    <platform name="ios">    
        <resource-file src="Settings.bundle" />
    </platform>
</plugin>

In Xcode, open ./src/ios, and create a new Settings.bundle

./src/ios/Settings.bundle/Root.plist

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>PreferenceSpecifiers</key>
    <array>
        <dict>
            <key>Title</key>
            <string>API Server</string>
            <key>Type</key>
            <string>PSGroupSpecifier</string>
        </dict>
        <dict>
            <key>AutocapitalizationType</key>
            <string>None</string>
            <key>AutocorrectionType</key>
            <string>No</string>
            <key>DefaultValue</key>
            <string>https://api.example.com</string>
            <key>IsSecure</key>
            <false/>
            <key>Key</key>
            <string>name_preference</string>
            <key>KeyboardType</key>
            <string>Alphabet</string>
            <key>Type</key>
            <string>PSTextFieldSpecifier</string>
        </dict>
    </array>
    <key>StringsTable</key>
    <string>Root</string>
</dict>
</plist>

At the root of your project, run cordova plugin add ./src/ios. It will say Installing "com.dataonline.dolores.settings" for ios.

Use me.apla.cordova.app-preferences to load those settings from Javascript.

./src/client/preferences.js

function ApplicationPreferences(){
    var _this = this;
    this.server = window.location.origin;
    document.addEventListener('deviceready', function(){
        function loaded(server){_this.server = server;}
        plugins.appPreferences.fetch(loaded, function(){}, 'api_server');
    });
};

applicationPreferences = new ApplicationPreferences();
// Later..
$.get(applicationPreferences.server + "/api/data");

Edit Switched from two <source-file>s to one <resource-file>



来源:https://stackoverflow.com/questions/22511548/cordova-phonegap-ios-app-settings-bundle-possible

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!