Episode 17 – Why Did the Chicken Crossy the Road?

This week we follow up on hiring the best iOS developers. We delve into changes to Twitter’s API and how they are holding back deep search features. Jaime steals Aaron’s pick with Crossy Road. Aaron’s pick is to introduce part one of a look into Apple’s TestFlight implementation through iTunes Connect. Tim’s pick is Screeny, an app that lets developers cull screenshots stored on the iPhone, the (RED) campaign and Monument Valley’s additional (RED) chapter. Tim also discusses the updated 3rd Edition of iOS 6 By Tutorials – covering the features added to iOS 6, updated for Xcode 6 and iOS 8.

Screen Shot 2014-11-26 at 10.07.02 PM

The picture Tim was trying to send

Episode 17 Notes

We Hire the Best
Hiring the Top 1%
New Twitter search API won’t be available to third-party clients
Build & Analyze – California Knife in Your Back
Twitterific 5 for Mac… the first casualty
Library of Congress Is Archiving All Of America’s Tweets
What the Library of Congress Plans to Do With All Your Tweets
WatchKit Resources site curated by FoS Brian Gilham
https://www.udemy.com

Episode 16 Picks

Crossy Road
Screeny
Monument Valley
iOS 6 by Tutorials Third Edition

Listen or Subscribe on iTunes

Listen or Subscribe on FeedBurner

Detect iOS 8 with Xcode 5.1.1

While prepping an app for submission that still supports iOS 6 & 7, we discovered a bug when the app in run under iOS 8. There was a change to EKEventViewController that leaves behind some UI when the view is dismissed. So we had to use the default method for presenting the view.

The way we tested for iOS 6 and 7 last year was to check the version with:

floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1)

However Xcode 5.1.1 doesn’t have an enum higher than NSFoundationVersionNumber_iOS_6_1, so it won’t detect an OS version higher than 6.1.

NB the recommended solution is to build your app with Xcode 6, which does recognize NSFoundationVersionNumber_iOS_7_1.

To detect the system version you can use “systemVersion” from “UIDevice”. It’s not decremented yet, so you can do something like:

NSLog(@”system %i”, [UIDevice currentDevice].systemVersion.intValue);

        NSString *version = [UIDevice currentDevice].systemVersion;

        if (version.intValue <= 7.1) {

            // Do something for iOS 7.1 or earlier

        } else {

            // Do something for iOS 8.0 or later

        }

This hasn’t been tested much, but give it a try.

The next release will be on Xcode 6 (I promise!)

Supporting StoreKit Affiliate ID in iOS 8 w/o breaking iOS 7

As you may already know, iOS 8 finally supports loading a StoreSheet complete with your Affiliate ID. This way you can keep users in your app without sending them over to iTunes or App Store apps and still get commissions from Apple. However if you want to support iOS 7 users (for the time being) you will need to load the Store Kit Product Parameters with the playlist only – or your app will crash. So naturally check for NSFoundationVersionNumber to test for version iOS 7.1 or 8.0 and load the correct parameters.

You can watch the WWDC 2014 Video about this new feature.

Here’s the code using contstants to hold IDs for your playlist, affiliate and campaign IDs.

– (void)openAppStore:(id)sender {

    // Initialize Product View Controller

    SKStoreProductViewController *storeProductViewController = [[SKStoreProductViewControlleralloc] init];

    // Configure View Controller

    [storeProductViewController setDelegate:self];

NSDictionary *parameters;

    if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_7_1) {

        // Load resources for iOS 7.1 or earlier

        parameters = @{SKStoreProductParameterITunesItemIdentifier:kPlaylistID};

    } else {

        // Load resources for iOS 8 or later

        parameters = @{SKStoreProductParameterITunesItemIdentifier:kPlaylistID, SKStoreProductParameterAffiliateToken:kAffiliateID, SKStoreProductParameterCampaignToken:kCampaignID};

    }

[storeProductViewController loadProductWithParameters:parameters completionBlock:^(BOOL result, NSError *error) {

if (error) {

NSLog(@”Error %@ with User Info %@.”, error, [error userInfo]);

} else {

            // Present Store Product View Controller

            [self presentViewController:storeProductViewController animated:YES completion:nil];

}

}];

}

 

Writing apps to work with twitter – avoid 403 error.

I’ve been working on some social networking apps, by following examples. It’s really frustrating to find that the authors haven’t tested their code, before, during or after publishing. So here are a couple of things I’ve found.

If you are attempting to post or read from Twitter’s API, you must use HTTPS.

Hopefully, this will save you some head scratching.

Cocos2d 2.x vs iOS 7

A quick note about getting lots of errors when building your cocos2d app under Xcode 5.1 and iOS 7.1. It took me by surprise  after updating Xcode, so I thought I post this.

Cocos2D 2.x is not 64-bit ready. So you will need to set your Architecture to 32-bit.

Select your target.
Choose Build Settings.
Change the Architecture to $(ARCH_STANDARD_32_BIT).

Screen Shot 2014-04-08 at 12.38.02 PM

 

Device Tracker app optimized for iOS 7 on sale today

Device Tracker iconOur latest version of Device Tracker  iOS app v1.43 has gone on sale today on the App Store. We’ve rewritten the UI to take full advantage of the new layout styles in iOS 7 as well as many upgrades under the hood.

One important bug fix is the ability to edit Locations. The input method was broken on iOS 7 and went unnoticed for months. Thanks to feedback from a user, this has been remedied.

Normally $1.99, Device Tracker continues to be on sale for $0.99 until at least February.

Download_on_the_App_Store_Badge_US-UK_135x40

 

Had enough with annoying iOS Notifications?

notificationsIf you’re like us, you (or a younger version) may have installed a Game or app on your device that insists on using Notifications. Often at the most inappropriate times. Notifications are handy for the developers to keep you engaged with their app or game. However there’s nothing worse than being notified that your “Gold storage has been updated!” in the middle of your company presentation.

Admittedly it’s better than it used to be. In previous iOS versions, you had to deal with Alerts!

So with iOS 5, Apple added the Notification center, so users could decide which apps could send them alerts.  However its not clear enough IMO why you still get banner notifications (see next paragraph.) To properly disable the notifications, of choose which will appear, switch off “Badge App Icon“, “Sounds“, “Show in Notification Center“, “Show on Lock Screen” AND set the Alert Style to “None“. (The last part is the one area I keep forgetting. It’s not that obvious).

Once you’ve set most (but maybe not all) of these settings, the app will move to the “Do Not Include” list. However one or more of these items may still be active. Annoying is to light a term IMO. So make sure you make all the settings you need. (maybe Apple should add a “Partial List” of apps.)

Does your business need an app?

About 10 to 15 years ago, it seemed that every company needed a website. A few years later, the growing popularity of social networks such as Facebook, Twitter and LinkedIn companies needed to have a presence of those sites as well. Currently nearly every one of your clients has a smartphone using some sort mobile app. For many businesses, having a business app on a smartphone is more and more a necessity. Which begs the question; does your business need an app?


Branding.

Undoubtedly branding is possibly the biggest reason for your business to have an app. Not simply a rehash of your web site but an app that reinforces your brand and your company’s promise. More and more loyal customers are accessing information via a mobile device. They look of your information on web searches, or on an app that aggregates and lists business services; apps such as, Yelp, Apple Maps and Google Maps. Whether you know it or not your customers may be creating reviews  and providing information to future clients through these social network aware apps. Without your knowledge your brand could also be suffering from unfavorable reviews.  Worse it could lose favor through bad online experience for a site that doesn’t fit well on to a smartphone.

By creating your own app you have the opportunity to control your own brand and make sure your marketing message is clear. An app gives you the opportunity to provide a more compelling experience to you clients. Your products and services wouldn’t escape your potential clients notice. It is your opportunity to curate your future clients impression of your brand.


Client Services

Creating a pleasant client experience through an app is a way to provide customer information, and build client loyalty. Many industries have come to create apps to provide extended services to clients. Built in services like Apple’s Passbook allowed Airlines, Movie theatres, Concert promoters to provide ticketing services through easy access for smartphone. Passbook and similar services can also be used to integrate client loyalty rewards.

Starbucks introduced an app that allows users to load up cash online and pay for services by flashing their smart phone. Pizza and fast food companies enable users to build and place orders through an app. Apps and services like Über, have turned the taxi and private car industries on their ear. By allowing taxi cabs and black cars with spare time to respond  to clients and get fares that would otherwise go unused. Cab drivers love it because they know they are going to paid and passengers feel secure as drivers are rated and known by name.

Positive customer engagement though these types of connections are create for retaining existing customer and building relationships with new clients.

Business Process

Every business has some process or industry knowledge that can be transformed into a compelling app. These processes can be developed and even streamlined through the ubiquity of smart phones. Enabling clients to make informed decisions can actually help businesses. The previous example, Über, enables cabs to get fares without centralized dispatch services – cutting out the middle man, so to speak. Actually the Über becomes the middle man. A smart app can enable and empower field agents by giving them tools to use away from the office. Insurance agents and instantly provide client quotes. Service personnel can be dispatched based on knowledge provided through look ups on a smartphone app. There are many new tie-ins to hardware that can report to or be controlled by mobile apps, to expand your business offerings.

Mobile apps can enable staff to monitor services, manage business process and customer support. Tying in back end systems, gives your front line staff access to marketing information, customer support information and other resources. Field agents can download the latest updates on your products and services. They can also create work orders and provide timely service to your clients and prospects. It can be a simple as what’s currently in your restaurant’s wine cellar or as complex as creating an insurance quote.

Getting Feedback

Clearly another benefit is getting feedback from your customers. Knowing how your business is perceived in the market is invaluable to any business. Providing a form or simple buttons could ask the client to provide a review, a star rating or add a fee suggestions. Thanking a client for positive or negative feedback goes a long way. Rewarding a client for there efforts adds kudos to your business. Often new clients are gain through references from past clients.

An app that connects to a back-end service can also provide some metrics about your business. Recently this author was involved in apps that provided localized content. Surprisingly the apps were far better received in European and Asian markets. Rather than relying on online store downloads (the equivalent to measuring a web site’s page hits) the apps provide insights that redirect future marketing efforts. Stories abound on successful companies who were surprised to find that their clients weren’t who they expected. The successful brands adapted to new found knowledge and redirected their product offerings to their new fans.

Getting Started

If you think your ready to get started creating an app, there are a few approaches you can take. Technologies seem to run in 10 year cycles, so that puts us near the middle age of native app development. If you’re the do it yourself type, you can read some books, such as the Big Nerd Ranch Guide – 4th edition for iOS, or their new Android Programming guide. They also offer one week long courses in the US and Europe. This author also teaches iOS courses at Witz Education in Toronto. There are also some great conferences you can attend; Apple’s WWDC, iOS Tech Talks, 360iDev, CocoaConf among many others. They cover the how to’s and the business of apps and app publishing.

There are also plenty of independent development companies who can consult on the viability of your app and even lend their skills to your pursuit of an app.  Look for a local chapter of Cocoaheads, or on Meetup. The bottom line is that the resources are there for you to get started.