Tuesday 16 December 2014

TestFlight Beta Testing

Just done my first try on distributing app to our tester via the new TestFlight Beta Testing.
Thought I will encounter a lot of issues after reading so many articles and feedback about the challenge of using it. However, everything went smooth on my first attempt.

So, I've setup 2 set of TestFlight now. I use the new one  "beta testing (pre-release)" for our internal tester , a step before we submit it to AppStore. And, the old one for our normal building and testing process.

Personally, I enjoyed using it. Here are the advantages I gained:
1. It is easier to ask for tester's Apple ID instead of UDID.
2. It is easy to manage, invite and toggling the testing mode between ON / OFF.
3. Smooth deployment in the way of the flexibility of picking a build version from the pre-release to become the final one to AppStore.


So, what I have done?

First of all, read through what is TestFlight Beta Testing about: https://developer.apple.com/testflight/

Especially the link to TestFlight video tutorial. It does give you a quick understanding about how TestFlight Beta Testing work and the benefits of using it.

Next, look at the iTune Connect Developer Guide (The linked show in the above url).  Particularly on 'The steps to setup prerelease versions of your app for testing in iTunes Connect.'.

However,......
There are number of stuffs or doubts you need to resolve first:
1) The step about generate profile that contain beta entitlement:
  • Generate a new App Store Distribution profile containing the beta entitlement to distribute builds via TestFlight.
Bunches and bunches of question around how to create profile that contain beta entitlement can be found from number of forums. Some people even work out a solution by editing the entitlement.plist file manually. Change the XML and make the beta testing work. Well, the trick is:

See the note here:
Important:  In order to use iTunes Connect for TestFlight beta testing, you must submit your app using the latest App Store Distribution profiles that contain the beta entitlement. 

The keyword is 'Latest!!!!'. Instead of doing any changes on the entitlement.plist or reuse your existing AppStore profile, create a new AppStore profile via iTunes Connect now.  The latest profile will include the BIT to turn on the TestFlight Beta Testing for you automatically.  1st doubts solved!

Don't forget to sign your app again with the new profile.

2) What do you need from the Tester? 
Well, I was doubts about whether I need the UDID anymore when I started using TestFlight Beta Testing. The answer is NO. The new TestFlight Beta Testing does not require any UDID from the tester, which has really benefit me from spending extra hour to instruct tester on how to get the UDID. Instead, just APPLE ID, that's all. 

Some common case of setting up a tester:

1. Error message in iTunes Connect User: 
"The email address you entered already belongs to an iTunes Connect account. To continue, enter a different email address."

This was really another painful stuff when you try to add a tester who already belongs to another iTunes connect team.  To overcome it, add a plus sign as a suffix after email name before the @ sign will solve the problem. For instance, this is my apple ID:   jeff@gmail.com, somehow this apple ID has been used in another iTunes Connect Team. In order to make sure Jeff can receive the invitation in his gmail account, enter the email address as jeff+@gmail.com

As a result, an email will be sent from iTune Connect to jeff@gmail.com


2. Continue the above issue: 
Once jeff received the email,  Jeff can follow the instruction from the email and continue login using jeff@gmail.com.   No changes are required. No need to change the Apple ID in your device to jeff+@gmail.com. 

3. Beta testing - No invitation being sent out at all? 
I think there is a bug on the TestFlight Beta Testing website. Basically, I didn't receive any email after a clicked on the invite button. But, switch off and on and beta testing switch again will solve the problem.


Some common cases and questions from the tester 

1. Error message from clicking the link from the invitation email:
"You aren't currently testing any apps. To accept an invitation, please click on the link...".

This is because the testers were reading the email from OUTSIDE the default email client in the device. For instance, your apple id:  xzy@gmail.com.  And, you have gmail app installed in your iPhone. It is very common that you will use gmail app to read the email. If you do that, then you will hit the above error message. 

To overcome it, forward the invitation email to the default email account set in iPhone's email client. Click the link again.   Problem solved!

2. Error / Alert in TestFlight APP (new app that need iOS 8):
"Redownload unavailable with this Apple ID - this redownload is not available for this Apple ID either because it was bought by a different user or the item was refunded or cancelled.".

OK, the above error is nothing to do with your App. The cause was something with the user's apple id in his/her device. 
In order to resolve it, there are 2 things to try out:

  1. Try download other app from AppStore. Just to confirm the tester's Apple ID is working.
  2. Please logout and login using the same Apple ID again. (Goto device settings --> iTune & AppStore --> Logout). Usually, this will solve the issue. 


Wednesday 19 March 2014

SignalR - Create 'Real-Time' web functionality to your ASP.NET application now!

Try to make a chat program? Poll the message very 5 seconds? refresh or reload the web page using complicated javascript?

I've been spending time to create a chatroom on classic ASP (12 years ago). Refresh client side to get the latest data from other client via a service side script is really a pain. However, it hasn't been easy in ASP.NET, because there hasn't been a decent abstractions for this on server or a client library to talk to.

SignalR - an asynchronous signalling library for ASP.NET that help build real-time multi-user web application!

It is really a MAGIC ! Something you must try and experience it.

Here is the min req:
.Net framework 4.5

If you are using VS2012,  you can install the Microsoft ASP.NET SignalR from NuGet. (There is another one called "Microsoft ASP.NET SignalR System.Web" , I haven't try this yet. Not quite sure what are the differences.)

There are number of tutorial available from Mircosoft asp.net website:
http://www.asp.net/signalr/overview/signalr-20/getting-started-with-signalr-20/tutorial-getting-started-with-signalr-20

Cool !

How to run unit test for your Xamarin Application in AppCenter?

How to run unit test for your Xamarin application in AppCenter?  When we talk about Building and Distributing your Xamarin app, you m...