How to distribute and install on test devices an iOS app under development? - ios

I am new to iOS app development. I have a standard Apple iOS developer license. When I build my app it creates an ipa file. If I send this file to someone, will they be able to install it? Or does that require an enterprise license?

You can share an ipa archive with testers/friends using Ad Hoc Distribution. You do not need an enterprise license to do it, team or individual is enough. You will need to register a device's ID in the Member Center and to generate an Ad Hoc provisioning profile with this ID:
Using this method, testers don’t need to be team members or iTunes
Connect users to run the app, but their devices need to be registered
in Member Center. You can register up to 100 devices per year that
your team can use for development and testing. Therefore, choose this
method if you can use a portion of these devices for testing and can
collect device IDs from testers. Also choose this method if you’re not
ready to create an app record in iTunes Connect. You don’t need to
validate or upload your app to iTunes Connect to distribute it using
an ad hoc provisioning profile.

As you have standard development licence, it's enough for distribution under 100 devices, and after one year, you can also remove previously registered devices from your member centre.
But as the answer above described, it should be ad hoc distribution only you can use any except Apple Store distribution, so the easiest way to do that is to just create a development provision with as many selected device as you want to distribute. After that, you just need to install a particular provision in your Mac by just clicking over it and then select the provision in your project.
Now compile your project.
After successful compilation, go to product folder, select the app, and reveal it in folder.
Copy the app file from this folder.
Just create one folder on your desktop and name it Payload.
Paste the app file you just copied inside the folder.
Place one image again on your desktop and name that iTunesArtwork but without extension.
Now select the payload folder and iTunesArtwork file together and compress it.
After compressing it, create archive.zip and rename it to may.ipa.
Now it will ask if you are sure you want to rename it. Press yes.
Now you have ipa read within few steps and you can use this payload and iTunesArtwork for making another .ipa or for any other project. Just leave this both folder and the file on your desktop. It will always help you.
Now go to http://diawi.com and upload your ipa file here which you just renamed, and then when it's done with uploading, press the send button. It will give you a URL. Share it with your testers or friends. They can directly download it in their device. No need to send ipa, and in this process, no one can use re-engineering in your .ipa. It's safe and secure.

Related

Can't figure out how to send iOS Apps Ad Hoc to certain iPhones using Xamarin on Visual Studio 2019

OK, so I created an app using Xamarin. I am wanting to push the app through Visual Studio 2019 on a Windows computer to certain iPhones. I included the my profile on Apple Developer website. You can tell it is ad hoc
Now I am in Visual Studio 2019, you can see I am using the correct provisioning profile
Now when I go to the Archive Manager in Visual Studio 2019 I see a couple of options
When I click Ad Hoc, I only see an option to "Save as". I don't know what to do beyond this point? Unlike when I push App Store, which uploads it to the store.
Please what do I do, what am I missing
That's the idea behind an Ad-Hoc build. The build is used to produce a file that is ready to be installed for the predefined devices. The file type can be either .xcarchive, or .ipa.
Quote from the official docs:
You distribute your app by providing the .ipa file for users to install on their devices. Because you select a valid ad hoc provisioning profile to archive the app, users don’t need to install the profile on their device, only the .ipa file. Users can use iTunes to install the app on their devices. If users want to use Xcode to install the app on their device, share the archive as an .xcarchive file package.
Basically, Apple guides you how to create a package or an archive which will be ready for distribution, but how these files will be distributed is up to the developer.
If you choose Save As in the last step/picture, you will have a distribution-ready .ipa file. You then need to deliver/send this file to the provisioned devices' owners. You can distribute it in 2 ways:
Follow the steps from the documentation. Unfortunately, this means that the user, that will have to have a Mac, in order to install the .ipa file through the iTunes. I haven't tried it on a Windows machine, but I doubt that it will work.
If you wish to simplify the whole installation process, you can go with uploading the file somewhere and sending the link to the users. Here, we can take 2 paths again:
a) Host it on your own. However keep in mind that this will require additional setup. There is plenty of steps only how to achieve this, but here's one way.
How to Install .ipa file to iPhone from Web Link?
b) Host it somewhere else. There are plenty of sites/cloud providers that can handle that for you. Personally, I am using Diawi, but I read somewhere that Dropbox should also work out of the box.

Run ipa on device without cable and not with TestFlight?

Is it possible to distribute IPA to device without TestFlight, and not via cable? I have a new MacBook Pro with usb-c and an iPhone. Hard to get company set up TestFlight. Any idea how to test on device?
Yes. Ad-Hoc OTA is the way to go.
On developer.apple.com:
navigate to your account & login
click Certificates, IDs & Profiles in the side menu on the left
on the left, find Devices & click +
register multiple devices by uploading a spreadsheet including the UDIDs and names of the devices
follow the steps to finalize the registration process
You might need to wait 24 hours; I found, it sometimes takes really long for the changes to take effect.
Inside Xcode:
prep: open Xcode settings, accounts, your account and then re-download all the profiles and certificates
archive the product
open the Organizer window and find the archive you've just created
click Distribute App
choose Ad-Hoc
make sure to have include manifest for OTA installation enabled
follow the steps
finally, click export and choose a location to save the files
Upload all the files (icons, .plist & .ipa) to your server. Note that the server needs to be https, this is mandatory. If your's isn't, upload it to Dropbox or some other cloud service. If you're using Dropbox, make sure to replace www.dropbox.com with dl.dropboxusercontent.com.
Manifest
open the manifest.plist file and insert all the new urls
again, for dropbox: replace www.dropbox.com with dl.dropboxusercontent.com
upload the manifest plist to a secure server.
Link:
itms-services://?action=download-manifest&url=https://dl.dropboxusercontent.com/s/YourURLHere/manifest.plist
You can try Diawi for Development & In-house Apps Wireless Installations
It will require the target devices to be registered into the signed provisioning profile that will be distributed with
For me Fabric is an excellent tool. You can check it out here. I often distribute ad-hoc builds using this. It simply sends the app install link in an email and you can open the email from your iOS device and install the build right away.

Is it possible to have multiple builds of the same application on TestFlight?

Is it possible to have multiple builds of the same application available on test flight, so that different user can download only builds for which they have been invited?
Also, right now, only build is what should be changed. If this is not possible, is there some way to accomplish this with a different setup ? (some setting in iTunesConnect or to setup an app differently)?
No you can't do it, but you have another way,
"Best way to distribute ipa to client is to upload ipa & provisioning profile to www.diawi.com and generate link. You have to send this link to client and client can install ipa in his device by opening generated link in his device's safari and then by clicking install application. Note that provisioning profile must include client's device UDID."
answer

How to build an iOS binary without setting an Apple Developer account and team?

I'm using Xcode 6.3.2, and I'd like to let another people to build and create the .ipa files of my projects, but I don't want neither to expose my Apple Developer account information, nor create users for them in my team... is that possible? Either by using Xcode, either by commands line.
Thanks in advance
EDIT: The goal is to prevent those external people from being able to submit apps to the App Store by means of my Apple Developer account and from being able to see the other apps managed in the account.
EDIT2: Does providing the distribution certificate to external people make possible to them to submit binaries to the App Store?
After reading your edits, I think I understand more clearly what you are trying to do. Basically, you will simply need to provide the other members of your team with the following:
The private key used to generate your app store distribution
certificate.
The distribution certificate
The app store distribution
provisioning profile
This will allow those team members to work on, and build the app for the app store. Without your Apple developer ID password, they will not be able to log into iTunes Connect to see the other apps you have. While they will be able to build the app for app store distribution, you (as the only one with the apple ID password) will have to be the one to submit the compiled app to the store.
So basically, your development team will create the apps. When you're ready for release, they can do an "Archive" in Xcode to create the .app that has been signed for the app store (using the provisioning profile and signing identity that you provided them in the three files I mention above. They will zip up the .app and the .dSym files into a .zip and send it to you. You will then log into iTunes Connect and set upt the app to be ready for the new binary, and then use the Application loader to upload the .zip to apple for review. Once you have gotten a successful review, you will again log into iTunes Connect to release the app. So at no point will the developers have access to submit apps or see other apps you have in the store.
Also, the development team will not need the provisioning profile, cert, and key until they need to build for the app store. During the development phase, there is no problem with them using their own developer accounts to build and test the app.
One additional thing to note is that Apple is changing the roles that are available in iTunes connect. You may want to review those new roles to see if some combination of those roles my work for your team setup.
From http://9to5mac.com/2015/06/12/wwdc-itunes-connect-testflight-limits-account-switching/
After several apps are added to an account by its admin, developers
can now assign user roles to individuals on their team— app manager,
developer, or marketer— with each allowing varying access to iTunes
Connect features. App managers, for example, will be able to create
users, assign user roles, change pricing, and submit apps for review.
Marketers will get access to updating store metadata, uploading promo
material, and requesting promo codes. Users assigned the developer
role will be able to upload binaries, and view crash logs and store
metadata.
Apple recently introduced Free-provisional-profile and/or free-developer-certificate support.
But it's limited (see below note).
To utilise that follow below steps suggested by Apple,
In Xcode, add your Apple ID to Accounts preferences, described in Adding Your Apple ID Account in Xcode.
In the project navigator, select the project and your target to
display the project editor.
Click General and choose your name fromthe Team pop-up menu.
Connect the device to your Mac and choose your device from the Scheme toolbar menu.
Below the Team pop-up menu, click Fix Issue.
Xcode creates a free provisioning profile for you and the warning text under the Team pop-up menu disappears.
Click the Run button.
Note that said support is limited, for example, the capability to sell things with "Apple Pay" would not even build with a free-certificate.
Yes, there are several ways to solve your problem.
You can create .ipa file with you provisioning profile and give them the file, they can you use application called "Application Loader", they can use this application to upload the .ipa, this should resign your application with their provisioning profile. I did not try this but it should work.
When you create an archive of you application, it will be listed in "Organizer", go to that location, and give them that .app file alone. Then they can use any third party application(can be downloaded from Mac Appstore) to resign the application with their profile. In this case, you are completely hiding your information. They can even change the application icon, default image.. etc during the resigning process.
When you build your application in release mode an .app file is created, this is unsigned binary. You can search for .app file in your Xcode project itself. Just find the location, and give them that .app file alone. Then they can use any third party application(can be downloaded from Mac Appstore) to resign the application with their profile. In this case, you are completely hiding your information. They can even change the application icon, default image.. etc during the resigning process.
Hope this helps.
No, There is no way to compile a .ipa without a provisioning profile (device compile, not simulator compile). To do this, you would go XCode->{AppTarget}->Build Settings->Code Signing->Code Signing Identity, and set 'Don't code sign".
Trying to compile afterwards will fail with
CodeSign error: Code signing is required for product type
'Application' in SDK...
EDIT: The goal is to prevent those external people from being able to
submit apps to the App Store by means of my Apple Developer account
and from being able to see the other apps managed in the account.
You have two options:
Send them your Source code + XCode Project, and not the library.
Compile the code using "iOS Developer" Code Signing identity, and not "iOS Distribution" identity.
Anything signed with iOS Developer can never be sent to the AppStore.
Anything signed with iOS Distribution can never be run on a device
unless it is downloaded from the AppStore.
They can never see what you have for sale, nor publish anything unless they have your AppleID username and password

Download .app from link

What kind of link do I need in order to download a .app file from Safari directly onto a device?
I want to do the same with .apk's, so any information / code snippets would be greatly appreciated.
Thanks!
You should use enterprise distribution. When you create your application archive there will be an option to do enterprise distribution. Once you do this you will get your archive as well as a .plist manifest file. Using these you should be able to create a link by following these instructions:
https://help.apple.com/iosdeployment-apps/?lang=en-us#app43ad871e
You will still need to get your users' UDIDs and create a provisioning profile for them to use. (iTunes required once)
Once that's done your users can click a link and directly install the app. (No itunes required!)
This is not possible with the current app store structure. Unless you are doing some sort of in-house distribution using an Enterprise developer license then the only way to get an app is through an app store link.
If you are thinking about using some kind of limited ad-hoc distribution you will still need to use itunes or iPhoneConfigurator to install it.

Resources