iOS: Running different apps on device - ios

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.

Related

Application Loader - build pushed on wrong app builds

i explain my problem.
We are two applications with the same name "MyApp" currently created on the itunes connect dashboard.
We did able to create two application with the same name using a different language localization (one in english and the other in native italian). Over this, applications are distributed to different countries (so the swiss - aka ch - version won't be visible to the italian - aka it - users).
Problem Context
The problem is related to the application upload: i'm using the Application Loader software to upload the respective ipa (myapp.1.0.9.prod.it.ipa and myapp.1.0.9.prod.it.ipa) to their remote application project dashboards.
What's wrong?
When i'm publishing the app for ch (myapp.1.0.9.prod.ch.ipa) and the process end correctly, if i open the TestFlight tab for the ch app, i'm not able to see my build but instead, it's result available for the it version.
How we distinguish apps in the project
To distinguish rightly the application, we performing a general renaming of the package name inside all project files to aim this situation:
myapp.1.0.9.prod.ch.ipa with package name "com.myapp.domain.ch"
myapp.1.0.9.prod.it.ipa with package name "com.myapp.domain" (considered as default)
Goals
Publish current ipad downloaded to its app project.
Limits
Please don't provide me solution that include itunes with the Archive menu, we cannot do it manually due to a builder dependencies that will be very pedantic without builder's feature.
Thanks in advance for your help!!!
Simon
You mention that you are changing the package name. I'm not exactly sure what you mean by that but you have to be sure you are setting the correct Bundle Identifier, or CFBundleIdentifier in your Info.plist to make your ipa upload to the correct iTunes Connect application.
Can you take a peek inside your generated .ipa and make sure you have the Bundle Identifier set as you expect?

Deploy two seperate iOS apps via PhoneGap with the same certificate/provisioning file

We'd like to deploy two apps onto our iPad, using the same code base and configuration. The only difference being one points to our test environment, and the other to our production environment.
I'm using the build.phonegap.com service (this may or may not be relevant), and so far I've tried to change the Name and Id (i.e. com.company.app) in the config.xml file, but everything I deploy and download, the app overwrites itself. As mentioned above, we want two apps at the same time on the device, pointing to different environments.
I have a hunch that I may need to use a different certificate for each app (so that it is built with a different bundle id i.e. com.company.app)
Any thoughts?
You definitely need to build each app with a different BundleID if you want them to show up as separate apps on the device. However, you can use the same certificate/profile as long as you set up the profile to contain both BundleIDs, or some wildcard that will match both BundleIDs.

How deploy two different apps in ios without having them overwritten

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"

What files to send to my iOS dev to receive a testable app back?

I hired a developer. He made app. I want to test it.
What I have:
Apple developer account - single - I never could figure out that
company international ID thingy.
Only I can access the account (am willing to give access if that is
only way)
I have OsX 10.6.2 snow lep running on Virtual Box all good
XCode 3.2.something (its older, updating requires new kernel and has
been problematic)
(I can utilize the apple dev provisioning wizard on dev.app.com to
obtain certs and files)
I have an apple certificate file downloaded to my computer that I
made under the provisioning thingy on dev.app.com
iPod Touch 4g (Jailbroken) if needed. (unknown if I can access it
via virtual box)
What I want to do...
Send whatever files to my ios developer so he can create a single file to email back to me. I take said file and install it on my iPod Touch, on my windows computer.
What do I need to send him so the developer can make this happen? Further what do I need to tell him to do. This part may seem odd as why would "I" not knowing how to build an iOS app be telling the dev how to do it. I have requested him to make this all happen before and there is a language barrier.
What I do not want to have to do:
Use the mac anymore (please tell me this is possible.)
(said in another way) I would like to Test apps by putting them on my ipod Touch (using itunes or safari and dev account is ok) BUT I want to be using windows.
Can this be done? I code Android. I do not know Xcode and dealing with builds from Xcode 4.6 then trying to open project in Xcode 3.X not knowing if there are project errors etc. and well...learning xcode jsut doesn't make sense...I mean then why hire a dev? yeah yeah cause he knows C++ I got that part.
Anyway, sorry for the 'flavor' parts of this message I just want to make a message that will sum up the "world of it all" for any future travelers trying to do the same thing.
Summary - I want to test apps on Ipod Touch (or whatever iOS device) using windows to install them to the device. Able and willing to use Mac to create needed files (certs. keychain files etc.) can use Mac for all building aspects.
Please advise and thank you very much programming gawds in advance.
Use the mac anymore (please tell me this is possible.)
2 .(said in
another way) I would like to Test apps by putting them on my ipod
Touch (using itunes or safari and dev account is ok) BUT I want to be
using windows.
It is possible. However, you may not understand the following steps because those should be done by iOS developer.
Step1. Your developer should archive it (In xcode, press Product, then Archive).
Step2. Open Organizer in xcode (top right corner), click the "Archives" page
Step3. Select the app you just built. Then click "Distribute" button and select "Save for enterprise or Ad-Hoc Deployment"
Step4. You will get xxx.ipa. You can drag this file in WINDOWS iTune and sync to your iPod.
Note: Your iPod should mark for "use for development" with valid provision.

Submitting a branched iOS project (same project name) to app store process

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..

Resources