How best to share iOS app progress with customer - iphone

I'm making an iOS app for a client, and need to share my progress with them in a convenient way.
At the moment I know of two options:
add their device to my provisioning profile then send an IPA to them
send an app through to them, built for the simulator, and have them run that directly
Neither of these are ideal, as the simulator doesn't give the full experience, and getting UDIDs off non-technical people can be painful.
Are there any other options I should know about?

I use testflight - iOS beta testing on the fly. I used to battle with the same problems you mentioned but once I started using testflight, I didn't look back. What testflight allows is -
You can add the specific customer to send the IPA to.
Progress reports
No need for your customer to go through the complicated Provisioning certificate
No need to register your device
You can even create groups and send different builds to different groups. Like "Test Group" would get more bleeding edge builds whereas the customers might get a more stable build.
Free over-the-air beta distribution. Apps are installed in one tap over-the-air and users will be notified of future builds.
Recruitment: Promote your beta app and select new users that sign up
Works within Apple’s guidelines and rules for ad hoc provisioning and device # limitations
You don’t need to jailbreak or alter your phone.
It is not a replacement for Apple’s ad hoc provisioning profile and device limitations.
Hope this helps...
PS: I do not work at testflight & this is not a promo. Just appreciating a good product...
UPDATE: Recently test flight has launched TestFlight Live, pretty awesome for tracking launched apps. This is all with detailed flowcharts et al. Definitely worth a dekko. Defunct after Apple buying TestFlight (or available in different name)
LATER UPDATE: Apple has bought TestFlight. Links updated.

https://testflightapp.com takes a lot of the pain out of circulating iOS app builds. It's free and it's worked very well for me.

Related

Xcode10.1 - Test on many iPhones (no liscense) possible?

My Apple Dev account says : "Your Apple Developer Program membership has expired." I can run my xcode projects on my real world iPhone.
I have build an App that should be running on several friends iPhones (different versions, iOS´s etc)for testing in the next time.
So, is it necessary to have a paid dev Account for testing on several devices of other persons/accounts? Maybe that my Apple ID allows the access to my iPhone only without a membership. How long will the test apps be running?
THX
So, is it necessary to have a paid dev Account for testing on several devices of other persons/accounts?
Yes. The ability to run on a device is exactly what a paid account gets you. A free account lets you run on your own device, but only under very limited circumstances; it is intended as just a way of seeing what iOS development is like.
How long will the test apps be running?
Hard to say, but you'll find out soon enough. Probably only three or four days, would be my guess.
The correct strategy for distributing apps to your friends' devices is (1) get a paid membership, and (2) create Ad Hoc builds or a TestFlight build.

Install app on test users

I recently finished my app development and now I need to test it with fair amount of users. So I want to install it on my friends devices. It will be hard work to manually install the app from my Macbook on each device, So Is there a way to let them install the app themselves? Maybe send them a link or something..
You can use something like TestFlight App to automate the process of sending builds via email so your beta testers can click on a link and install the app directly on the device. You will however need to add their Device UUID's initially to your signing certificate for each build
You may use TestFlight service https://testflightapp.com.
This is a free service that allows you to define a test user base, inform & invite them and to distribute your app quite easily for them to be tested.
The basic logic is the same as Apple's, but it is just very easy to learn and use - even testers that are truly "normal" users of iPhone can easily be invited and start testing your app.
Here is a nice tutorial on distributing builds to your testers:
How to Host a Beta Test
They only way I think they would be able to do that is by having their devices registered on your Apple Developers account and they will need the provisioning licenses given by you.
Then once they have the project they can upload it to their device if they have a Macintosh.

What's the point of the provisioning process Apple makes you complete in order to test your apps on an iOS device?

Today I walked to through the process of getting my iOS device connected to my computer and running my app. To do that, I had to...
Obtain a developer certificate
Assign the device to my team
Obtain my app ID
and create a provisioning profile
While I understand the process and was able to successfully get my device connected, I don't at all understand the point of all this. Can anyone explain the point of each step in that process and why Apple has us do this?
Thanks so much in advance for your help! It's important to me to understand this stuff at least at a high level.
Apple just wants to torture the developers :)
Joking aside, I don't know why. There's no official explanation why you need those steps, here's my speculation.
Apple wants to make sure that
only the developer registered to Apple can freely install
onto his or her i-Devices
applications of his or her own applications .
This is presumably to forbid the distribution of apps outside of Apple's own App Store. If any of these three steps is not required,
it's easy to imagine how you can "abuse" the developer status to install lots of apps without going through App Store.
This explains why you need to do 1, 2 and 3. In order for XCode and the i-Device itself to check it, you need a provisioning profile. This explains the point 4.
As a rough explanation.. the device only runs signed apps. Your developer certificate (along with your private key) signs your app so it can run on your device. (or other development devices of your nomination)
If you beta test, your Ad Hoc certificate + provisioning profile will allow all devices with their UDID in the profile to run that app. The beta testers don't need your developer certificate, just their device UDID embedded in the profile.
When you distribute to the app store, you use a Distribution profile (along with the team agent key), and that needs additional signing (co-signing?) from Apple before that code can run on the device. Because Apple signed it, the device doesn't care what UDIDs are allowed.
Apple has made a business decision to maintain tight control over developers and apps both during and after their app development. This means that at any given point in time, they have a tight connection between a developer, app, devices, and the app's users, be it through the adhoc distribution mechanism, or through purchases that users make in iTunes Store. We may only speculate what they internally thought that the goals and benefits here are, but as the market has shown, the outcome is beneficial to all parties, as they have shot from oblivion to one of the most popular smartphone platforms in a few years.
One quite straightforward goal is that they intend to maintain control of the distribution channel and make sure the app cannot be officially distributed through any side channels and they have control over all the money that moves, hence the 100-deviceIDs-per-developeraccount limit (so you couldn't distribute your app outside Apple's channel, yet the 100 devices should be sufficient for closed testing).

How to test the final distribution build before submitting it for review to the iPhone app store?

I have developed an iPhone App and I want to test this final distribution build before submitting it to the App Store for review.
Is there any safe way to make this app to run on a device?
You might want to also check out Craig Hockenberry's "The final test" blog post.
Craig gives a method of testing where the only difference between what you test and what you submit is the signing identity.
No, you can't. This makes me a little nuts, too. If you set up an ad-hoc distribution profile, that is as close as you can get. On the "positive" side, you're guaranteed to have your app rejected if it can't be installed properly...
check this out, you can actually test a distribution build :
http://nikhilkerala.blogspot.com/2010/12/how-to-test-app-store-distribution.html
You can setup a beta through the iPhone portal program. You can then load the App and the associated profile onto a phone through iTunes or XCode.
I know this question is a little old, but I've recently found a better way of testing and distributing my Apps prior to submission and this method allows me to easily get it on real devices without having to have the device physically in my hands or have the user muck with provisioning profiles, certificates or iTunes syncing.
Developers can create an account on TestFlight and create a team.
After creating a team, invite testers to your team (click "Invite a Teammate" on the team's page). The tester will receive an invitation email to join your team and will be walked through the process of creating a basic account (name, email, password) and will have their device registered and their account will be added to your team.
Once you have your testers in place, go to your team's page and select all the testers, export their device information via the link and import that list into an Ad-Hoc distribution profile.
Import that profile (and the Ad-Hoc certificate) into Xcode and rebuild your project and share it as an *.ipa file.
Go back to your TestFlightApp.com team's page and upload the binary. All the testers on your team with access to the build will get an email notification about it. All they have to do is click "Install" in the email and they will be taken to a TestFlightApp.com page that will install the App on their device over the air, no iTunes, no mucking around with profiles, etc.
I tested it this morning actually and I'm very impressed with how easy it is and it also happens to be free.
It is actually possible to install the distribution build if you have once previously installed an Ad Hoc build on your phone. Most people simply never tried it =)
And no jailbreak is required. For step by step instructions, see my answer here:
Testing App Store "Distribution" version

iPhone app without AppStore

We have an industrial app that currently runs on a very expensive ruggedized PDA.
Since most of the engineers we sell to have iPhones we are considering moving to the much nicer newer platform.
A couple of questions:
Is it possible to sell iPhone apps with out the app store? Apple taking a 40% cut of a 99c iFart app is one thing but this is a $3000 engineering calculation app. We have also heard of the hassles some people have had getting apps approved.
Can we sell an iPod touch (I understand selling an iPhone without a contract is trickier) with pre-packaged software.
ps. Sorry for the anonymous posting, the company is a little nervous about our relationship with the PDA maker.
There are basically three different official iPhone application distribution methods that I am aware of:
- App store
With this method anyone with an iPhone can have access to the application. You can distribute an unlimited number of applications like this. Apple gets a 30% cut. Of course Apple must approve your applicaion.
- Ad hoc
You can distribute applications using ad hoc without going through the app store, but you are limited to a maximum of 100 devices. With this method you can distribute you application from a web site, email, etc.
- Enterprise
The method is for internal distribution in companies with more than 500 employees. Apple does not provide any more public detail that I could find on this method.
It doesn't sound like any of these methods meet your criteria unless you have fewer than 100 customers and don't plan to exceed that number. It sounds like from the question your customers are not internal to your company.
I would advise contacting Apple. They might be able to work out some kind of custom distribution deal.
Enterprise developer program allows in house distribution, avoiding the appstore. It's $299 vs $99 and doesn't include AppStore distribution.
For companies with 500 or more employees who are creating proprietary in-house applications for iPhone and iPod touch.
Apple also has a B2B Program, which sound like you are aiming for. It allows you to sell your apps directly to other businesses. You can find out more here: https://developer.apple.com/programs/volume/b2b/
Spotify has a free app you can download, but to use it you have to have a Premium account. So you don't have to sell your app for $3000 to go thru the app store.
You can give the app for free in Appstore, but it will require an online activation. The online activation will cost 3000$. If apple would not accept the app, you can try to create a very limited version (without activation) and get it accepted in appstore. Then release un update for it, which will enable online activation system.
It's a pity - the iPhone/iPod touch could make a really nice platform for automation/interface stuff.
I was working on an embedded industrial platform recently - a 16bit micro, 64K memory, a serial port and a 120x128 2 grey level screen for $1000/unit and $10,000 for the appalling OS/devkit.
I can't see how apple could possibly care if you purchase iPod touches, jailbroke them, installed your app and sold them to customers.
For a $3k app, the $220 for an iPod Touch is less than 10% of the sales price.
Testflight. Google it. Basically you get an account with testflight. Put your app on testflight. You send your customer an email and they click it on their iphone. It sends testflight an email with your customers device ID. Testflight sends you an email saying "a New customer requested your app" and their device ID. You add their device ID to your provisioning chain and rebuild your App. Upload it to testflight, they get a notification that it's ready, and they can install it. Somewhere in there be sure to get your money :)
Native app, no. However, you can create it as a Web App that's specialized for the iPhone, in which case you circumvent the app store altogether.
You could consider a HTML5 app on Safari which offers many of the features of an app like offline access, local storage, canvas for rich graphics etc. No distribution issues and no commission. Depends what you need - access to camera, compass I think is not possible. (Also: works on Android)
Edit:
Here's a great intro -
http://sixrevisions.com/web-development/html5-iphone-app/
How to Make an HTML5 iPhone App
Build a version of Tetris that is "for the most part, it’s going to be a pitch-perfect imitation"
Full Screen
Offline Cache
Persistent storage
If your app is pretty expensive, you probably have few customers and they receive personal support, so what you could do is the following:
Have each customer get their own Apple developer license ($99/year). Your support can talk them through the process, or you can probably do it for them. Give them a discount/credit for the $99 they pay to Apple.
Compile your apps logic into a library, and make a thin shell that loads code from the library.
Give the customer the XCode project for this shell, and the binaries for your code :-). Write a little OS X app that triggers the download of XCode, the compilation, and installation, so they can "compile" and deploy "the app they are developing" (a.k.a. your app) to their devices. Or, do it as a service for them.
Don't forget to get your lawyers involved. I'm sure there are ways to look at it in which this is legal, and interpretations in which this violates some license. There is probably a way to make this waterproof, e.g. by calling your customers "developers" and yourself "consultants" in the contract or something. Helping a customer compile their app is not prohibited :-)
If you do this, deployment is not going to be so smooth as if you go the official way, but you'll save a lot of money. For a $3000 app, instead of 30% you'll give Apple 3.33%. I haven't done this, and I don't know anybody who has, and can't even recommend it, but I also can't see why it wouldn't work. So it might be worth a try.
I wish. Short answer, no.
There is some kind of a hack, whereby you isntall your app in a ad hoc manner, but you can only have 100 devices. Painful road if you ask me.
The way to do this would be to give the app for free in iOs store.
But charge $3000 for an activation code or subscription fee purchased from your website.
You will need to give the free app some basic functionality of some kind, however. Apple won't approve the app if it doesn't do anything without the activation code.
If it was me I would do one of the follow:
1) Submit it to Apple and sell it for free. They then enter a license code bought from you to access the full feature set. Include a welcome page, about us, contact page for unlicensed functionality. As Apple won't approve it if it does nothing.
2) Get the companies you're selling to to open an Enterprise account with Apple. Then you build the IPA and sign it using their credentials and send them the IPA.
Good luck.
This article summarizes all the answers to this question and discusses Apple's B2B, iOS developer enterprise program, adhoc distribution and testflight.
http://mobiledan.net/2012/03/02/5-options-for-distributing-ios-apps-to-a-limited-audience-legally/
All of the solutions (except the test-oriented solutions, which are limited), however, force you to get Apple's approval before publishing and updating. This process can take time and can leave your users stranded when you have a critical bug that needs a quick update.
If this is a deal breaker for you, you might want to try developing the app for Android, which also has advantages and drawbacks, but in your specific case, gives you more flexibility.
In Android, you can email an APK file, a user clicks it, and the app gets installed on the device.
In iOS, every devices that is not a member of the "enterprise program", "b2b" program or is provisioned for testing, cannot install the app.
You have to jailbreak the iPhone to put an app on it not from the app store.