Can InAppSettingsKit be used just for Settings.app - iphone

I would like to use InAppSettingsKit only for displaying the settings in the Settings.app of the iPhone. I have different custom settings for in-app settings. Is this possible and how can this be achieved ?

To support traditional Settings.app panes, the app must include a Settings.bundle with at least a Root.plist to specify the connection of settings UI elements with NSUserDefaults keys. InAppSettingsKit basically just uses the same Settings.bundle to do its work. This means there's no additional work when you want to include a new settings parameter. It just has to be added to the Settings.bundle and it will appear both in-app and in Settings.app. All settings types like text fields, sliders, toggle elements, child views etc. are supported.
The plists are searched in this order:
InAppSettings.bundle/FILE~DEVICE.inApp.plist - InAppSettings.bundle/FILE.inApp.plist
InAppSettings.bundle/FILE~DEVICE.plist
InAppSettings.bundle/FILE.plist
Settings.bundle/FILE~DEVICE.inApp.plist
Settings.bundle/FILE.inApp.plist Settings.bundle/FILE~DEVICE.plist
Settings.bundle/FILE.plist
I hope it helps!!
EDIT:
The InAppSettingsKit library searches automatically on all your settings bundles, in that order I wrote before. However, the settings.app only searches into the Settings.bundle. So, if you want a separated settings file for your app (using InAppSettingsKit) you can create a Settings.bundle for your settings app and a, e.g., InAppSettings.bundlefor your in-app settings.

Related

Disable specific settings dynamically

I am developing an iPhone app which uses Settings.bundle to let the user choose some options.
I have two questions regarding this:
How can I completely remove/hide some setting? (for instance if the app is running on iPhone 3G I want to hide settings regarding the compass)
How can I disable (fade) a setting? (for instance, I have two Toggle Switches and if the first is set to OFF the second one has no meaning and should be disabled)
You can't. Your app cannot dynamically influence what is shown in the Settings app.

iPhone App display name

If I have an iPhone app named: MyCoolApp
How do I keep the bundle named: MyCoolApp.app
But have the app name on that shows up underneath my icon read: My Cool App
I have changed my PRODUCT_NAME target setting to be "My Cool App" and changed my plist CFBundleDisplayName and CFBundleName to be "MyCoolApp". So far my app name on the device still reads "My Cool App"
I'm pretty green to this stuff still. Thanks for any help you can provide.
You might need to delete the app from the device and reload it for the change to take effect.
Sometimes when changing the Project Properties it does not work. Project Properties and Target Properties Window look the same. I have mistaken there sooo many times. ;)
The best way to do this is using a key called Bundle Display Name. It has to be added in the info.plist.
DO NOT CHANGE THE PRODUCT NAME IN BUILD SETTINGS.
This is not a good approach as it changes your bundle identifier. All you need to change is the product display label.
Note: Make sure to include this in info.plist in your projectTests info.plist also.

In-app settings controlled by plist?

Is there a library or good tutorial which covers creating in-app settings, like this:
http://img.skitch.com/20090625-s8bf6ahybwe3cesd1id38h3nt.jpg
What I would like is if it:
doesn't use the built-in Settings app, and does not replicate it's settings in the Settings app
is controlled by a plist file with various Dictionaries and Arrays
creates a nice looking table view
allows edit-in-place text fields as well as switches and sliders and ticks etc
doesn't have any of the annoying problems I've come across when trying to build my own version (not scrolling to show the textfield, cells disappearing)
JUST TO EMPHASIZE: I DO NOT WANT THE SETTINGS TO APPEAR IN THE SETTINGS APP.
It would appear that the iphone dev world is crying out for such a thing.
THANK YOU!
InAppSettingsKit
I've used the open source project InAppSettings, and it works well.

How to Show a GPL licence in iphone application bundle

i am making an app for iphone and for that i am using certain free libraries.My problem is that i want to show their complete license of nearly 4-5 pages in my application bundle so that a user can open settings in iphone and see that licensing page at one time but i am unable to do it.I have read these Specifiers for making an application bundle .
PSGroupSpecifier
PSTitleValueSpecifier
PSTextFieldSpecifier
PSSliderSpecifier
PSToggleSwitchSpecifier
PSMultiValueSpecifier
PSChildPaneSpecifier
but i want to show a page full of text like Settings->General->About->Leagl
just like in iphone through PSChildPaneSpecifier .Please help me how to do this>???
Thanks
You can create the same effect as used by Apple's iWorks apps for the license > section of the settings, without using any custom preference controller. Note this works for iOS 5 on the iPad, I have not tried it elsewhere. Use a PSChildPaneSpecifier for the initial control in the root plist. This points to the name of another plist file which will be the displayed child pane. You do not add .plist to the name within the root.plist file, it is implied. This plist file must be within the settings bundle. Next, use PSGroupSpecifiers in the child pane as the controls. For each paragraph use another PSGroupSpecifier - so the thing will scroll. Only use the Title section of the PSGroupSpecifier. The next gotcha that I found, was that by putting the strings in the plist file, the text was clipped in portrait orientation, so a placeholder string needs to go in the plist file and a StringTable used to point to a strings file. Text read from the strings file is properly kerned and displays without clipping.
The iPhone's "Legal" page is a custom preference controller which you can't use (not even with undocumented methods – you need to write a preference bundle in system locations which AppStore apps can't reach at all).
If you'd like to display the license, show it in the app.
I think you are going to need to use something like a UITextView, just make it non-editable. You can make in unobtrusive in your app but I think that is the only way to have 4-5 pages.
I don't think there is a nice way of displaying this in the preferences bundle. Personally I would either provide a series of url links or bring the preferences into the app itself. There is a good framework on github here that you may be able to modify.

Is it possible to add info or help text to an iPhone settings bundle?

Several of the Apple-provided apps have informational/help text in their settings. For example, the Keyboard settings screen includes, under the “.” shortcut toggle, the help text "Double tapping the space bar will...".
I know I can do this in my app by adding a group footer, but is it possible to do this in the settings app by adding a field to the plist file in my Settings.bundle?
According to recently changed Apple document, a FooterText key is available in PSGroupSpecifier dictionary, which is only available in iOS 4.0 or later.
Reference:
https://developer.apple.com/library/content/documentation/PreferenceSettings/Conceptual/SettingsApplicationSchemaReference/Articles/PSGroupSpecifier.html
The way I do it, and the way I have seen other third parties apps do it is just to use an informative Title as a PSGroupSpecifier
I have only seen the native Apple apps do it in this other, slightly nicer way. I expect the ability is buried deep in the undocumented regions of the SDK.
Using FooterText key in PSGroupSpecifier is what you need to use. And it is documented as xesique already said.
Note that the "FooterText" key is not built into the pop-up menu of the Settings Scheme / plist editor that is part of Xcode. When you select a "Group" and type a keyboard return or press the plus icon you are presented with a choice of either "New item"," "Type" of "Title". You are required to manually edit this key value. Then the text that you enter as the associated string will appear as grey text (rather than the black text used for the Groups members) and which maintains its upper / lowercase.