I'm doing an app and i try to have a setting that the user would be able to change from the iOS Settings page,
i opened a new settings.bundle in my app
and kept some of the default values, but i dont see it in my actual device settings
i tried reinstalling that app many tines, and i still dont see the app settings in my settings options on my iOS
here is my settings i created:
i kept the default values in the Root.plist
but also on the simulator and also on the actually device i dont see anything on the settings
what am i doing wrong ?
From the official docs at https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/UserDefaults/Preferences/Preferences.html:
A Settings bundle has the name Settings.bundle and resides in the
top-level directory of your app’s bundle. This bundle contains one or
more Settings page files that describe the individual pages of
preferences. It may also include other support files needed to display
your preferences, such as images or localized strings. Table 4-2 lists
the contents of a typical Settings bundle.
So renaming your settings bundle to Settings.bundle should fix the problem.
Related
My config:
react-native: 0.66.3
xcode: 13.2.1
When deploying an application to the simulator, or to real device, I cannot access the settings page of the app in iOS.
I have a button that asks for user location, and I should at least see it on the settings page.
I tried to deploy the application on release variant, but same thing.
I checked some solution on the web, and I found a solution with many upvote but it still did not do the trick.
Maybe there is a way to generate a Settings.bundle with cocoa based to the permission that we have ?
In my case, I came across this and I followed these instructions :
Adding the Settings Bundle Open your workspace inner ios folder with
xcode To add a Settings bundle to your Xcode project: Choose File >
New > New File. Under iOS, choose Resource, and then select the
Settings Bundle template. Name the file Settings.bundle.
My application was available on the Settings application on iOS, and I just updated the file with my permissions.
From now, the purpose of this file is to manually add some permission, or information (like the version code).
But the automatic permissions like geolocation will be added automatically.
App Store Connect keeps blocking App upload by issuing
ITMS-90129: The bundle uses a bundle name or display name that is already taken.
So far I tried:
Changing the Display Name, Bundle Identifier (even with generated Hashcodes to make sure that the names really are not taken already)
Created alternative Profiles, Identifier and App in App Store Connect (also using the same mentioned hashcode)
Tried these changes in the Xcode input fields (under 'General') and also directly modifiyng the Info.Plist
Re-Exporting the project from Unity to XCode with the new naming (to make sure Unity is not writing some bundle id somewhere which is not visible in XCode)
(Update) Tried to Clean the build folder based on
minchaej suggestion
Additional information: The XCode project is exported from Unity and we're using Firebase which is installed via Pods.
I'm grateful for any hint where to continue looking - because I'm really running out of ideas. Thanks a lot for taking the time.
Cheers
vik
The solution for this (probably very Unity-to-XCode specific) issue was localization related:
I had to remove all but the English localization entry in the Localization section.
I'm not sure why there were other loca resources before (since we didn't set them up) but I assume these included an alternative app name which was causing the ITMS-90129 to pop up.
My salvation for ITMS-90129 is the next:
Remove definitions for
CFBundleName
CFBundleDisplayName
CFBundleSpokenName
for base(en) localisation InfoPlist.strings.
Setup this variables with single value $(PRODUCT_NAME) directly in Info.plist
Variable $(PRODUCT_NAME) define via root project Build Settings/Packaging/Product Name
Setup variable LSHasLocalizedDisplayName in YES value in Info.plist
Setup Russian (or other) localisation for variables
CFBundleName
CFBundleDisplayName
CFBundleSpokenName
via InfoPlist.strings
As I am personally assume, setup this variables via base localisation is the key of problems in which I am faced with
we have implemented a phonegap application using Typescript, Angular, css etc. We use PhoneGapBuild to package this up and deploy to iPads.
I would now like to add some settings for this app in the iPads settings application - currently, this only shows the permission items like camera, notifications etc.
I have managed to use the cordova plugin "me.apla.cordova.app-preferences" to set and fetch application preference values... but these are not being shown in the Settings app.
Investigating further, I believe that you need to create a Settings.bundle folder with the Root.plist file inside... which I have done (I actually created it using xcode and copied the resulting files into the root of my phonegap project (next to the config.xml))... and still after a PhoneGapBuild and re-deploy nothing appears in the Settings app for my application. Upon inspection of the .ipa file... the Settings.bundle is location in the www folder... is this correct?
So could someone please tell me the baby steps required to get settings to appear in the Settings app for this type of project.
For my iOS app I am trying to have multiple build configurations so I can create development and production builds that target different servers, configurations etc.
In Xcode I have created another build configuration and scheme to target this configuration. So I have the separate configuration/schemes as:
Dev version
PRODUCT_NAME=MyApp-dev
BUNDLE_IDENTIFIER=com.organisation.myapp-dev
Original Version
PRODUCT_NAME=MyApp
BUNDLE_IDENTIFIER=com.organisation.myapp
Both configurations can be built with the different schemes. Both will run on the same device because of the different identifier, but the dev version still shows MyApp on the home screen. When looking in the build products, it produces a MyApp.app bundle with a target inside it of MyApp-dev.
Is there another setting to change the wrapper name from MyApp.app to MyApp-dev.app? And any other setting that may be preventing PRODUCT_NAME setting to be used in the app display name?
edit: In the info.plist file, both the CFBundleName and CFBundleDisplayName are set to $(PRODUCT_NAME)
n.b. I have done this before with another app and all is working fine there, hence the query if another developer has changed a more targeted setting that overrides this change.
There was a InfoPlist.strings file in the project that was overriding CFBundleDisplayName. I removed this definition from this file and all worked as desired.
The project is not localised and so I never considered this override! Hopefully if someone else comes across this, remember settings in Info.plist can be overriden with localised strings in this file.
I took a project I did recently where the app was universal and I copy-pasted the project. With the copy, I've done a Lite version where I don't support iPad.
I've changed everything I think necessary to make this project as unique, independently that it was a copy from another project: changed the bundleID (matches with the first version on the store), project name, display name, etc. I've removed the iPad storyboard and all the iPad icons. I've also removed the iPad icons from the plist.
Now the App is ready to go and i'm trying to validate it with Apple. Then it gives me the following error:
Icon specified in the Info.plist not found under the top level app wrapper: Icon-72#2x.png (-19007)
but for all the "missing" icons. Before I tried to validate, the debugger said nothing but after the validation attempt, it now give me 6 warnings, which say the same as the error above. One warning per "missing Icon".
I've tried to delete derived data from xcode, clean the project, restart Xcode, etc. But it keeps telling me the same.
Any idea? Thanks in advance!
If you change from universial to iPhone-only via project interface, the iPad-Icon and the iPad-Storyboard are still in the info.plist.
Just open the info.plist as Propertylist and delete the wrong entries.