I am taking over an IOS legacy product written in Objective-C.
Say, the product is called Foobar.
To run both the old version and the new version on the iPad, I first called our version of the software "OurComp Foobar".
After a while, I was able to present it to our customer and named it back to "Foobar".
Now, when I look at the settings in the IOS user settings, our application is still listed as "OurComp Foobar". I found this after I added some settings which appeared there. Deployment to this device always takes place from xcode directly to the device.
I have grepped through the entire source directory, looking for the string "OurComp", but it doesn't appear anywhere.
I guess it is linked to the bundle id etc. - but where would I have to change it back?
Once the software will be available to the public, we want to present it as "Foobar", not as "OurComp Foobar".
Note that this is a question on software development, not on jurisdiction. We are developing the software on behalf of the client.
The only user facing app name is the CFBundleDisplayName, which you set in the Info.plist. The name on the App Store is a different name and is set via App Store Connect.
Related
My understanding is that because of sandboxing, it isn't possible to view any text file (ie config file) associated with an iOS app using another app. Something quite simple with Android. Am I mistaken?
I am trying to implement a text config file with a Unity iOS app that gets loaded and parsed once when the application boots.
This config file would also be able to be edited and saved manually on that actual iOS device.
(addendum)
In Unity there is PersistentDataPath which resolves to /var/mobile/Container/Data/Application/foo/Documents
Is there an iOS supported file explorer app that will allow me view and edit files in this location (without jailbreaking)?
Use can check iOS App Groups. It allows multiple apps access to shared containers and allow interprocess communication. There is no so much documentation about this, but maybe that's what you're looking for. At least you can share NSUserDefaults between the apps.
NSUserDefaults it's a most simple way to save any (not big) configurations for your app. For manual editing: if your app on the device signed with developer certificate, you can connect through any iOS supported file explorer app and edit it. But after release, from App Store, your app installed in restricted/private path, so it's not possible, if only you don't have a jailbreak.
Initial configuration you can put into your app bundle, and at the first run just copy them to NSUserDefaults.
Short answer: There are utilities such as iExplorer - https://macroplant.com - that allow "file manager" type access. However...
Long answer: If your app requires users to buy (or get) other software to modify configuration files, the chances of Apple approving it are slim to none.
The appropriate thing to do is to provide a User Interface in your own app which allows the user to modify / update the settings.
I want to have two version of the same IOS app to stay in the same time in the same device, one for testing and the other for production.
The app is built using phonegap build, so what I have done is
using two different bundle id specified in build.xml (edit: config.xml), so that one is dk.xxxDev.mobile, and the other one is dk.xxx.mobile
having two different apps in the apple developer page, so now I still have the previous one for dk.xxx.mobile and the new one dk.xxxDev.mobile
building using two different provisioning file, one for each app (one is using a developer profile, while the other is using an ad hoc certificate, but i guess we don't care about it)
Still, every time I deploy using itunes or testflightapp, one app overwrites the other one! What am I doing wrong?
edit: I Also changed
- the tag "name" in the build.xml (so that testflightapp can distinguish them )
- I'm using different filnames when I add the app to iTunes
Can you check if the 2 versions of the app generate are using the same IPA file name?
The file naming convention for the Mpbile Apps is as follows:
app_name.version.IPA file
iTunes in the Mac or in the PC store the mobile apps in IPA format and if they are using the same name, installing one will override the other. This is a valid question for Apple Support and this is something that a future version of iTunes may fix.
I was doing something different from what I wrote, I was probably using the same certificate for both versions.
So doing exactly what I wrote, it is supposed to work.
You need to change bundle identifier of one of the apps
Select Project in Xcode, then select target and in general tab you will see bundle identifier string.
e.g. com.YourCompane.AppName change "AppName"
I have a base project, which I would like to re-brand and resell for clients. So my question is: When I branch and create a new project obviously it needs to be a separate entity from the main. Is the only thing that separates these apps during submission the Bundle ID?
Since renaming projects can sometimes be a pain, what I'm doing is:
Creating the branch
Opening it in XCode and changing the Target name, and this changes the bundle ID because it's set to com.whatever.${PRODUCT_NAME:rfc1034identifier}.
So I'm wondering when submitting a new project, is the bundle ID the only thing that needs to be globally unique? or are there more attributes that I would need to change for each new branch/project?
Thanks
From my experience, only the bundle ID needs to be different.
A few things you should notice though:
You probably want the app splash screen / icon / icon label to be different between clients too
Under Build Settings your Code Signing Entity might need to be different too. If you have certificates+provisioning profiles which are specific to the bundle ID, you would have to create new sets of those for every client and use them when building
If you see that you're starting to change resources (like the icon / images for branding / string tables) between clients, using multiple projects and a shared static library may be easier for you. Take all of your shared code and convert it to a static library iOS project, and then create a separate project per client (normal iOS app project) which uses this library. This way all the metadata (like bundle ID, certificates, icons) can be different, and the code be the same.
If your app defines any URL schemes (for example, if you implement login with Facebook you need to do this), these schemes should be different between clients too. If they are the same, you are bound to have collisions when a user installs 2 apps on their device.
And one last tip regarding Apple policy:
If you are planning to submit all of these client apps under your developer account, this may be against Apple policy and your apps might be rejected. Apple wants you to open a dev account (and pay the $99/year) per client..
I have a strange problem with my application name: my project is called "something - somenumber" (with the dash).
For the submission, the App name I've chosen is without tje dash, infact, in the iTunes Store I can see the name without it.
But when I download my approved App, the name is with the dash..
Have you ever heard something similar???
Is this a problem with the new SDK and IOS version?
Now the name has to coincide with project name???
Thanks
By default, the Bundle display name in the Info.plist of iOS apps is ${PRODUCT_NAME}. ${PRODUCT_NAME}, by default, is the same as the project name, which in your case has a dash. The Bundle display name is the text that gets displayed under your app's icon in the device's home screen. This could be the reason why you can see the dash when you download the app.
You should change the CFBundleDisplayName in the apps Info plist file. This value is what the iOS spring board uses underneath each app. This can also be localised.
.bundle identifier is for the provisioning profile.
I'm a novice iOS developer and got my iOS developer program account, I setup the iOS certificate and Provisioning Profile and I can run my test app on my device(iPad). My question is if I want to run different test apps(imagine couple Apple sample codes) on my device without replacing the last tested app on my device(I mean keep all of them on my device at the end of test) what would be the trick here? I know each app has it's own bundle identifier, but how to manage this scenario for running all of them on the device with the same iOS Certificate/Provisioning Profile?
Just change the Name of the project and it should refactor. Change the name on the root of files & folders in xcode. You can click on it and it'll let you change the name. In Build Settings Properties change the name under there as well. Click at the very top of your list of files where it says the name of your project and it'll bring up the build properties.
If I understood you correctly, there are two parts of your questions:
Yes, you can run many (distinct) apps on your device.
To have multiple version of the same app running on your device, all you need is change app's product name to a different name, app1, app2, etc. It is a relatively easy process to do it. This SO Q/Aenter link description here has the instructions. You do not need to rename your project or any thing else. Just make a copy of the project and follow the instructions to make a new product name.