Under the Bridge

All About Strings

Are you reading objc.io? If not, you should be. Check out issue #9 for more than you ever realized you didn’t know about strings. Yes, strings.

Quick now: How do you correctly find the length of a string containing odd characters like emoji? And how can you be certain you’re comparing strings with combining characters for visible equivalence correctly? If the answers don’t spring to mind, check out NSString and Unicode.

How do you correctly, i.e. locale-aware, join a list of items for text display? That’s one of the many tidbits in Working with Strings.

No doubt you know how to use localized .strings … but did you know in iOS 7+ you can do locale-aware plurals with .stringdict files? And do you know how to correctly display a localized file name? See String Localization.

Need to validate your input? Or have a full expression grammar? Check out String Parsing.

Finally, know how to calculate bounding rects for attributed strings in the new non-deprecated iOS 7 way? And how to lay out hanging indents for lists and decimal-aligned number tables with Text Kit? If not, here’s String Rendering to get you up to speed.

Haven’t seen a developer periodical this consistently high quality through issue #9 since … well, ever, actually … so we strongly encourage you all to subscribe with their app to keep the goodies coming!

UPDATES:

Extending “strings” to include “text” — Open Source Library And Editor Tool For Easily Formatting Text Within Your Apps

Continue Reading →
0

Custom Keyboards

For our Underutilized iOS Feature Of The Week award, how about UITextField/UITextView’s inputView field? Probably pretty much totally overlooked it, haven’t you? Here’s a sample implementation for next time something like that strikes your fancy (h/t: iOS Dev Weekly):

venmo / VENCalculatorInputView: Calculator keyboard used in the Venmo iOS app:

687474703a2f2f692e696d6775722e636f6d2f565767796d6a482e676966.gif

If you don’t have custom input needs but just want to improve the regular keyboard experience, there’s news for you too: Fleksy has released an iOS SDK that lets users long press to switch keyboards, if they’ve installed the free Fleksy app:

Screen Shot 2014-02-23 at 2.34.47 PM.png

And here’s another project to improve the default keyboard:

tonqa / JustType – The Better Keyboard for iOS

JustType is a keyboard extension using swipe gestures, highlighting and suggestions. It is built to be used in any iOS text editor and all text-intensive iOS apps. And it is really easy to use. If you want to have a video demonstration you can find it on this blogpost.

And just as a side caution, if you do get all excited to implement a custom keyboard with transparency and it displays funny in iOS 7, check out this Stack Overflow question!

Continue Reading →
0

TestFlight, R.I.P.

So no doubt pretty much everyone reading this uses TestFlight for distributing their betas, yes? Well, looks like you might have to rethink that plan.

First up, their FlightPath (née TestFlight Live) analytics disappeared with just a note to participants “so we can focus on other areas of the business”. Well, bad ideas disappear all the time; apparently that turned out to be a bad idea, competing with Flurry. Surprise level: 0.

Second up, they decided to ditch Android completely:

We are refocusing TestFlight on iOS. While we will continue to support app development on iOS, support for Android beta testing on TestFlight will stop by March 21, 2014.

What does this mean?

After 3/21/2014 no user will be able to upload any Android builds to TestFlight.

Whilst of course we thoroughly approve of that strategy, it seems … out of step with market conditions, does it not? Surprise level: high.

Next up, they stopped taking new customers on iOS too:

On 2/19/2014 we announced that only Teams who have previously uploaded a build with the TestFlight SDK will be able to continue to upload builds with the SDK.

What does this mean?

If you are an existing Team that has previously uploaded a build with an SDK attached you will need to upgrade to the latest SDK version by 2/26/2014, afterwards your build will be rejected until it has the correct SDK version.

If your team has never uploaded a build with an SDK or you are a new TestFlight user then you will not be able to incorporate any version of the TestFlight SDK. You will be asked to remove the SDK from your build and re-upload.

OK, now things are getting downright weird. Surprise level: WTF?

Well, the sleuths over at TechCrunch figure they know what’s going on:

TestFlight Owner Burstly Acquired By Apple

Burstly, the makers of an in-app ad management platform called SkyRocket and the parent company of popular mobile app testing platform TestFlight, has been acquired, we’re hearing. Though we’re working to get more information on this now, including deal terms, our understanding is that Apple is the acquirer here.

We’ve been pointed in Apple’s direction by a couple of sources…

Well, on the one hand that’s just about out of character as Apple acquisitions get, on the other hand, we sure don’t see any other plausible explanation for the increasing oddity of recent events, do you? Hopefully Apple just had a “why didn’t we do exactly this all along?” epiphany and are just bringing the TestFlight we all know and love under their umbrella, but on the off chance that’s not what’s going on here, maybe you all want to sign up for HockeyApp while the signing is good!

UPDATE:

All right, this is the first time we’ve updated a post inside the hour: It’s official!

Apple Confirms Burstly Buy

“Apple buys smaller technology companies from time to time, and we generally do not discuss our purpose or plans,” company spokeswoman Kristin Huguet told Re/code.

So yeah, anything you’re relying on TestFlight for right now: figure out a Plan B. Just in case.

MORE UPDATES:

From Crashlytics Labs: Announcing Our Beta Distribution Tool

Continue Reading →
0

iTunes Connect Help

Ever get frustrated with submitting your apps/IAP/Game Center stuff through iTunes Connect? Yes, who hasn’t, indeed. Check out this piece for some help with saving your sanity:

Mastering Command-Line iTunes Connect Submissions

… iTunes Connect is, of course, a critical piece of the Apple developer puzzle. However, inputting any serious amount of content requires more than a little bit of patience, good luck, and praying to the powers-that-be that iTunes Connect doesn’t kick you out before you’ve uploaded your marketing assets and copy.

As the person managing the localisation of our apps and App Store copy, I spend a not-inconsiderable amount of time dealing with iTunes Connect and you can easily lose an afternoon in the system when you’re refreshing up to 15 screenshots, the release notes and marketing copy in each localisation. It’s a similar story for the Mac – huge Retina screenshots that can only be uploaded one at a time make for a time-consuming and often infuriating process.

However, there’s a relatively little-known tool available from Apple that can ease your pain, allowing you to retrieve, pre-flight and upload your app metadata…

Ever notice the ‘Transporter User Guide’ link under ‘Deliver Your Apps’ on iTunes Connect? Yep, that’s the relatively little-known tool.

But there’s some extra niftiness here:

Whilst Transporter has been a great improvement to our workflow, I’ve been itching to improve it further. To get things started I’ve built a small app that allows you to avoid both the Terminal and iTunes Connect itself to submit your iTMSP packages. It’s called Connecter, and the source is available on GitHub

commandlineitunes.png

Worth checking out for lowering the pain level on your store management, yep.

h/t: iOS Dev Weekly!

UPDATES:

Open Source Tool Providing An Extensive CLI For Working With iTunes Connect

How to submit multiple iOS In-App Purchases

Apple In-App Purchase: Creating App Store Hosted Content

Continue Reading →
0

Design Prototyping: Origami

This is a pretty nifty approach to prototyping your interface:

Screen Shot 2014-02-01 at 7.33.20 PM.png

Most designers today create static mockups to communicate app ideas. But increasingly apps are anything but static, which means as designers we need a better tool for interaction design.

Origami is a free toolkit for Quartz Composer—created by the Facebook Design team—that makes interactive design prototyping easy and doesn’t require programming…

Neat. And it made #1 on this list of 10 interactive design prototyping tools to check out, no less.

Check out the introduction post here, and if that looks interesting download it from the link above, follow @FacebookOrigami, and if you want to get out on the bleeding edge the repo is at facebook / origami!

h/t: iOS Dev Weekly!

UPDATES:

Facebook Develops A Photoshop For Interaction Design, And It’s Free For Anyone To Use

Prototyping with Facebook Origami

ideo/avocado : A Toolbox For Creating Interactive iOS App Prototypes Enhancing Facebooks Origami

Continue Reading →
0

App Annie’s 2013 Retrospective

This is worth a read to keep tabs on just who’s winning teh app storez:

App Annie Index: 2013 Retrospective – The Top Trends of 2013

2013 was a milestone year for mobile apps and app stores alike, setting the stage for exciting new opportunities in 2014. Over the last year we saw many new trends including significant growth in emerging markets, a dramatic shift in game spending on mobile and the global expansion of social messaging platforms. In this App Annie Annual Index, we will uncover a variety of trends and insights to guide you in making smart business decisions.

Specifically, this App Annie Index 2013 Retrospective report recaps the top headline trends of 2013 with insights to the top-growing countries, categories, app stores, and more. The report shows the causes of this growth, giving you insights into the trends and markets you can’t ignore for the upcoming year…

Here’s their picks for ‘Top App Trends of 2013’:

  • Trend 1: Google Play Surpassed iOS in Worldwide App Downloads
  • Trend 2: Japan Became the #1 Country in App Revenue, Surpassing the US
  • Trend 3: BRIC Countries Emerge in 2013, While New Markets Are Poised to Break Out in 2014
  • Trend 4: App Store Games Spend Exploded, Surpassing Game-Optimized Handhelds
  • Trend 5: Freemium Proves Its Worth
  • Trend 7: Music App Revenue Rocked Out in 2013
  • Trend 8: Social-Focused Photo & Video Apps Went Viral
  • Trend 9: Mobile Banking, Payment, and Financial Management Apps on the Rise

The report also includes top apps and publishers by country, and top countries and categories for both the App Store and Google Play. Nothing shockingly unexpected jumps out at us on a first flip through it, but having some quantitative data to back up your impressions is always handy, yes?

UPDATES:

Also check out Developer Economics Q1 2014 for another industry overview!

Continue Reading →
0

Animation: Canvas

Feel like adding a little gratuitous animation to your interface? Here’s a library that makes that easy:

Screen Shot 2014-01-28 at 7.11.10 AM.png

“Without code”? Huh? What they mean is that you can configure animations directly in storyboards:

Screen Shot 2014-01-28 at 7.04.02 AM.png

Helps out with custom fonts, blurred backgrounds, and other goodies as well. Check out the usage guide here, CanvasPod / Canvas on github, and follow @CanvasPod if that looks handy!

h/t: iOS Dev Weekly, ManiacDev!

Continue Reading →
1

Optimizing Network Traffic: CocoaSPDY and FastCoding

Ever have discussions of this pattern?

BOSS: Do me this obviously ludicrous so data heavy as to be next to impossible to make work at all network-based thing.

YOU: Uh … ok. <do next to impossible thing>

BOSS: It’s too slow! And too expensive! Waaaaaah!

Here’s a couple of options to be aware of when you’re trying to squeeze every last bit of juice out of your network traffic:

CocoaSPDY: SPDY for iOS / OS X

For over a year now, Twitter has supported the SPDY protocol and today it accounts for a significant percentage of our web traffic. SPDY aims to improve upon a number of HTTP’s shortcomings and one client segment in particular that has a lot of potential to benefit is mobile devices. Cellular networks still suffer from high latency, so reducing client-server roundtrips can have a pronounced impact on a user’s experience…

One of our primary goals with our SPDY implementation was to make integration with an existing application as easy, transparent, and seamless as possible. With that in mind, we created two integration mechanisms—one for NSURLConnection and one for NSURLSession—each of which could begin handling an application’s HTTP calls with as little as a one-line change to the code…

We’re still actively experimenting with and tuning our SPDY implementation in order to improve the user’s experience in our app as much as possible. However, we have measured as much as a 30% decrease in latency in the wild for API requests carried over SPDY relative to those carried over HTTP.

In particular, we’ve observed SPDY helping more as a user’s network conditions get worse…

If you’re slow because you’ve got a whack of back and forth traffic with a SPDY-enabled data source, this could be a pretty big win — as noted above, especially with the absolutely horrible latencies seen on cell networks that us developers tend to overlook since we’re always developing with wifi connected.

More likely though, your only big wins are going to come from optimizing your data representation, optimizing its JSON, switching to binary plists, and so forth, and here’s an interesting-looking new option to consider for that step:

nicklockwood / FastCoding: A faster and more flexible binary file format replacement for Property Lists and JSON

FastCoder is a high-performance binary serialization format for Cocoa objects and object graphs. It is intended as a replacement for NSPropertyList, NSJSONSerializer, NSKeyedArchiver/Unarchiver and Core Data.

The design goals of the FastCoder library are to be fast, flexible and secure.

FastCoder is already faster (on average) for reading than any of the built-in serialization mechanisms in Cocoa, and is faster for writing than any mechanism except for JSON (which doesn’t support arbitrary object types). File size is smaller than NSKeyedArchiver, and comparable to the other methods.

FastCoder supports more data types than either JSON or Plist coding (including NSURL, NSValue, NSSet and NSOrderedSet), and allows all supported object types to be used as the keys in a dictionary, not just strings.

FastCoder can also serialize your custom classes automatically using property inspection. For cases where this doesn’t work automatically, you can easily implement your own serialization using the FastCoding Protocol…

Looks like a pretty nice set of advantages for your local serialization needs, and would likely be applicable to network transmissions as well; the format is simple chunk based so should be easy to create/parse as applicable with your network service development environment of choice.

As always, if you’ve got any more unconventional or obscure tricks you use to speed up and/or cut down size of your network traffic, let us know!

UPDATES:

Just in case you missed it, SPDY protocol support is available in NSURLSession on OS X Yosemite and iOS 8, and also used by UIWebView and Safari!

Continue Reading →
0

Tip: Easy App Store Refunds

Yep, we all get ‘em: that customer who finds something unexpected about your app and angrily demands that you, yes you, refund their money NOW and don’t want to hear about how you don’t actually have any way to do that? Well, here’s instructions straightforward enough to hopefully mollify them somewhat:

You can get a refund for any app on the App Store by following this process:

1. Visit https://reportaproblem.apple.com

2. Sign In with your Apple ID.

3. Click “Report a Problem” on the offending app.

4. Choose “Problem is not listed here” and be sure to mention that you are asking for a refund because it doesn’t work as expected.

h/t: @drbarnard!

Continue Reading →
0

Cocos2D V3 + SpriteBuilder 1.0

Not too many open source projects survive the founder leaving, most especially when it’s to a direct successor of that project, but those of us who were distinctly out of sorts at the thought of sacrificing our friendly Objective-C Cocos2D in blood and tears to the fixation on the cross-platform development chimera of the people who pay us to have fun can celebrate today:

Cocos2D V3 RC1 release

We are excited to announce the coordinated release of Cocos2D V3 and SpriteBuilder 1.0!

This release of Cocos2D brings three major improvements to the Cocos2D community: SpriteBuilder, which is a professional GUI editor for easy iteration on games; Chipmunk2D integration for rapidly developing physics-based games; and Apportable support out-of-the-box for all this, so that your Objective-C games can run on Android!

So for those that haven’t been keeping score so far, the number of cross-platform development environments using Objective-C just went from zero to one. Pretty cool, huh?

SpriteBuilder’s visual editor enables developers to quickly prototype and build high quality games with intuitive, elegantly designed tools. Designers and developers can work seamlessly together and drastically cut development time. SpriteBuilder is the only game development suite that allows you to run your Objective-C code as a native app on Android. Apportable compiles Objective-C programs directly to ARM or x86 machine code, so a game built with SpriteBuilder will run faster on Android than a game written in Java or other languages…

And what’s awesome sauce on that awesomeburger is that SpriteBuilder is open source, so writing yourself a custom level editor just difficulted down fantastically to boot. Check out this reddit Q&A for some more interesting tidbits.

If you’re in a hurry to check it out, as you should be, here’s the Getting Started page, and there’s already some tutorials and demos out there:

How To Make A Simple iPhone Game with Cocos2D 3.0 Tutorial

Clone Angry Birds with SpriteBuilder

CocoRoids: Example game for Cocos2D v3 using CCPhysics and SpriteBuilder features.

CCPhysicsColorMatch: A simple CCPhysics based color matching game.

We’re certainly hoping this investment works out well for Apportable; can’t think of any other development suite anywhere where the tool chain is fully open sourced and also backed by a sustainable revenue model, which aligns the interests of everyone involved in remarkable consanguinity. So do your part by paying up to Apportable for at least an Indie license, so they can keep their “about seven engineers” working on it!

UPDATES:

The Guide to Building and Customizing SpriteBuilder v1.x

Building a real time multiplayer game with SpriteBuilder

Layouting with SpriteBuilder and Cocos2d 3.0

Migrating to cocos2d-iphone v3 – Tips & Tricks

Using PhysicsEditor with Cocos2D V3

Continue Reading →
1
Page 7 of 118 «...56789...»