How to Add an Internal Tester to TestFlight If They Already Have an iTunes Connect Account

As a consultant, I’ve had this situation come up many times, and it’s very frustrating because Apple doesn’t allow an Apple ID to belong to more than one iTunes Connect account.

The scenario is that you have a client or friend that you would like to be an internal tester in your organization’s iTunes Connect account, or, perhaps it’s the corollary situation in which you have a client who has their own iTunes Connect account and you need access to their account as a tester or admin or developer. I’ve had this situation come up both ways, and here is how I’ve dealt with it.

The main requirement is that your prospective tester has a Gmail account. I’m not sure if this trick works with other email systems but it definitely works with Gmail. So if they they do, then you should be good to go. These days most individuals and companies are using Gmail as their provider so I haven’t run into anyone that this didn’t work with yet.

On with the process!

In nutshell, to circumvent Apple’s crazy limitation, you can do the “+appname” trick on their Gmail email address. For example, if the person I want to add is “”, and the name of the app I’m working on is “Awesome App” I would send him an invitation as “”. Their Gmail-based mail system will let the email through just fine.

Then, they create a new, separate Apple ID with “”, and iTunes doesn’t complain. iTunes Connect emails get sent to the right place because Gmail just treats them as the same account, and then your client (or you) can have multiple iTunes Connect accounts with what amounts to the same email address.

Then when they receive the follow-up notification to join TestFlight, it arrives at the right email address, and when they tap the button in the email it opens TestFlight on their device, they sign in with their normal Apple ID (even if it’s, and then they’re in.

It feels a bit hackish, but it works!

I’m pretty sure I learned this technique from this blog post, which also has some other great suggestions for working with clients and getting their builds up to the App Store, which is a subject for another day…

Announcement: Lightning Talk @CocoaConf San Jose 2015!

This has been something I’ve wanted to do for a long time.

I was already signed up for CocoaConf San Jose 2015, and just a couple of weeks ago they announced in a conference email that they had four slots open for Lightning Talks. I immediately jumped at the chance.

Thankfully (and amazingly)… they accepted!

I don’t want to spoil the presentation since, after all, it’s only a five-minute presentation. However, I will say that the theme is Saving lives with iBeacons and it focuses on the combination of iOS, iBeacons, and Healthcare.

The talk came out of a recent project I was working on for a client of Cloud City Development and I thought would be perfect for a talk at a conference, and the client agreed!

Therefore, I am super excited that I can do an abbreviated version of the talk at CocoaConf San Jose, and I really hope I can do in a more robust, full-featured version in the future… but first things first!

See you there!

Quick list of what’s new in Xcode 7.1

What’s new in Xcode 7.1

Xcode 7.1

Xcode 7.1 adds support for new iOS devices and the new Apple TV. Xcode supports storyboards, unit and UI testing, playgrounds, and crash logs features for tvOS.

Interface Builder

  • Storyboards now support 3D Touch gestures such as Peek and Pop.


  • Swift error breakpoints can be created in the Xcode debugger.

    Swift errors activate defined Swift error breakpoints when the error is thrown. You can edit Swift error breakpoint so that they are activated only for a specified Swift error type.


Part Two of Core Bluetooth, iOS and Bluetooth LE Development Blog Series Now Available at Cloud City!

As I have mentioned before, I work for an awesome software development studio in San Francisco called Cloud City Development, and back in June we published Part One of the series Zero to BLE, which is a tutorial series focusing on developing for iOS using Core Bluetooth.

Today, I’m super excited to be able to announce that Part Two of the series has been published! As in the first article, the examples in the article are written in Objective-C, not Swift, and it has an associated tutorial project on Github that you can download and experiment with.


Again, I would like to thank Cloud City Development for allowing me to create this series, and I’m already working on Part Three, so look for that in the upcoming weeks!

Tutorial: How to Create a PDF with Quartz 2D (via

OK so this goes back a little bit – 2012, in fact – but I was recently researching how to create a PDF from within an iOS app. I honestly didn’t know if it was possible.

Thankfully, the following is a very helpful and clear tutorial on by Tope Abayomi with steps for creating a PDF using Quartz 2D in iOS :

How To Create a PDF with Quartz 2D in iOS 5 – Part 1 – Ray Wenderlich

Thanks again Ray and crew!


How to use Helvetica Neue UltraLight (and other fonts) in your iOS Code

One of the more frustrating things about doing things in code is when it comes to fonts. Lately I had to do a guessing game when I wanted to use Helvetica Neue UltraLight as a font in a demo for an upcoming blog post for Cloud City Development, and it was making me crazy playing the “guess the font name in code” game:

“Helvetica Neue Ultra Light”? Nope.
“Helvetic-Neue-Ultra-Light”? Nope.
“Helvetica-Neue-UltraLight”? Nope.
“HelveticaNeue-Ultra-Light”? Nope.
“HelveticaNeue-UltraLight”? BINGO!

It took me a few tries through the trial-and-error method, but I eventually got the right name (as you can see from the list above, it’s “HelveticaNeue-UltraLight”), but it led me to think there must be an easier way.

Enter Font Book.

Font Book is an application that comes with Mac OS X for managing fonts in your system, and it turns out that it can help us as developers to solve these kinds of riddles. The challenge is that the answers are little a bit buried…

So… let’s go through this particular challenge.

First, let’s open Font Book (Look in Applications > Font Book, or if you’re an Alfred or Spotlight search user just start typing “Font Book” and it should pick it up immediately).

When you launch FontBook, it will probably look something like this (select “All Fonts” from the sidebar if it’s not already selected):


Then, the next step is to scroll down and find “Helvetica Neue” in the list of font names, and then expand it and select “UltraLight” node in the list:


If we examine the details in panel on the right, the item we are most interested in is the PostScript name entry, since this is the one that we will use in our code.

As you can see here, the value is “HelveticaNeue-UltraLight”:


We can actually highlight and copy it directly from the detail panel. Very convenient.

Now that that’s done, it’s basically just a matter of plugging in the new value into your code:

myLabel.font = [UIFont fontWithName:@"HelveticaNeue-UltraLight" size:128.0];

myLabel.font = UIFont(name: "HelveticaNeue-UltraLight", size: 128.0)

…and that’s it! Mystery solved!

How to have multiple iTunes Connect accounts, and submit apps

iTunes Connect is a bag of hurt sometimes, especially if you have clients that you work with. One of the biggest frustrations that I have (and hopefully this will be changing in the future) is when you need to submit builds and you cannot use an email for an Apple ID in iTunes Connect to manage your client’s Apps, TestFlight, Users, etc.

While there is no easy way to accomplish this yet, at least there is this post by mokagio that helps ease some of the pain…

How to have multiple iTunes Connect accounts, and submit apps

TL;DR You can’t! There is no Apple way to do it, and this is yet another frustration of working in this platform. The steps described below are just a workaround to handle multiple iTunes Connect accounts in a sane-ish way.

While I don’t love using the Application Loader, at least it works. Also, creating email addresses for Apple IDs with the “+clientname” trick works great if you use a Gmail-based email system, and I’m fine with having my clients use this method when they add me to their iTunes Connect accounts.

Customize the background color and title of a UINavigationBar and the status bar

Here’s an example of how to customize the background and title color of a UINavigationBar without having to use an image (in this case, a blue background with a white title AND white status bar):

    // Set the navigation bar to blue
    [[UINavigationBar appearance] setBarTintColor:[UIColor blueColor]];
    [[UINavigationBar appearance] setTranslucent:NO];

    // Set the navigation bar's title text to white
    [[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor whiteColor]}];

    // Here's where it gets a little weird: we set the barStyle property to *UIBarStyleBlack* to achieve a *white* status bar.
    [[UINavigationBar appearance] setBarStyle:UIBarStyleBlack];

Strange Case of the non-scrolling-to-top UITableView

Earlier today I had a situation in which the gesture to scroll a UITableView to the top by tapping on the iPhone status bar was not working.

Strange and annoying.

On doing some investigation, I found a clue on StackOverflow which pointed me in the right direction. It turns out that if you have a nested scroll view whose scrollToTop property is set to YES (the default), it will prevent the containing UIScrollView (or in this case a descendent thereof, UITableView) from recognizing and responding to that gesture.

In fact, in the documentation for UIScrollView, it says the following under “Special Considerations”:

Special Considerations
On iPhone, the scroll-to-top gesture has no effect if there is more than one scroll view on-screen that has scrollsToTop set to YES.

In my case I have a UIScrollView inside each UITableViewCell, which was defaulting to YES for scrollsToTop. Once I programmatically set that property to NO, the UITableView began responding to that gesture again!

Case Closed!


Xcode Tip: Open multiple projects at once

I discovered this one accidentally since I really did want to open three projects at the same time after opening Xcode.

It turns out that the “Open Project…” dialog in Xcode supports multi-select! So you can Shift-Down/Up to select more than one project, hit Return and all three projects will be opened simultaneously!

I pretty much stumbled on this one when I did an “I wonder if this works” kind of thing at that dialog, and sure enough, it opened all three.