Under the Bridge

AWS Mobile SDK v2

In case you’re not on the AWS mailing list like apparently we got onto somehow, there’s a new version of the AWS mobile SDK out, and it looks like it might be worth some serious consideration for your cross platform back end needs:

The AWS Mobile SDK helps you build high quality mobile apps quickly and easily. It provides access to AWS Mobile services, mobile-optimized connectors to popular AWS data and storage services, and easy access to a broad array of other AWS services…

And what are these services? Quite a bit actually:

Amazon Cognito makes it easy to save user data, such as app preferences or game state, in the AWS Cloud without writing any backend code or managing any infrastructure. You can save data locally on users’ devices allowing your apps to work even when the devices are offline. With Amazon Cognito, you can focus on creating great app experiences instead of having to worry about building and managing a backend solution to handle identity management, network state, storage, and sync.

Amazon Mobile Analytics lets you easily collect, visualize, and understand app usage data at scale. Amazon Mobile Analytics is designed to provide aggregated data within 60 minutes of receiving events from an app so that you can act on the data more quickly. With Amazon Mobile Analytics, you get 100 million events per month for free.

Amazon Simple Notification Service (Amazon SNS) makes it simple and cost-effective to push notifications to Apple, Google, Fire OS, and Windows devices, as well as Android devices in China with Baidu Cloud Push. You can also use SNS to push notifications to internet connected smart devices, as well as other distributed services. You get 1 million notifications/month for free.

Amazon Simple Storage Service (S3) provides secure, durable, highly-scalable object storage. Amazon S3 is easy to use, with a simple web services interface to store and retrieve any amount of data from anywhere on the web, and the AWS Mobile SDK includes additional functionality to optimize access from a mobile device.

Amazon DynamoDB is a fast and flexible NoSQL database service for all applications that need consistent, single-digit millisecond latency at any scale. It is a fully managed database and supports both document and key-value data models. Its flexible data model and reliable performance make it a great fit for mobile applications.

Amazon Kinesis is a fully managed service for real-time processing of streaming data at massive scale. Amazon Kinesis can continuously capture and store terabytes of data per hour from hundreds of thousands of sources such as mobile app events and website clickstreams. You can also emit data from Amazon Kinesis to other big data services such as Amazon S3, Amazon Redshift, and Amazon Elastic Map Reduce (Amazon EMR).

Haven’t used any of this either v1 or v2 ourselves, but if you feel like trying it, there’s a 12-month free plan; sign up, check it out,

To get started, learn more at http://aws.amazon.com/mobile and download the iOS or Android SDK. Engage with the AWS developer community on the AWS Mobile forums or our Github Android|iOS repositories. To stay up-to-date, follow us on Twitter at @awsformobile.

and let us know how that went for you!

Continue Reading →
0

Bezier Pathological Strings

Here’s a handy little Swift library for adding a dab of style to your string rendering:

lvnyk / BezierString: Rendering NSAttributedStrings along arbitrary UIBezierPaths

where.png

Take your string and your path and generate a UIImage, draw into a CGContext, or use UIBezierLabel anywhere you’d use a common-or-garden UILabel. Cool beans!

And if you’re not overly familiar with UIBezierPaths, check out some of our other mentions of their care and feeding and applied niftiness:

Bézier Path Construction

Bezier Path Boolean Ops

Bezier PathMove

Core Animating Interfaces

Library: Capture a Signature

h/t: ManiacDev!

UPDATES:

How to curve CGMutablePath?mayoff / path-warp: UIBezierPath+Rob_warp.h

Custom UIView Animations with Vector Graphics

Continue Reading →
0

Healthy Kit

Looking for some Christmas presents for the other Apple fanbois/fangrrrls in your life? Here’s a rundown of various pieces of kit that are HealthKit-enabled, that’s a good way to combine geek fun with subtle lifestyle commentary:

How to make the most of Apple’s HealthKit in iOS 8 with compatible apps and accessories

..the free Health Mate app from WiThings can track your steps and log stats like weight using the iPhone’s M7 and M8 motion coprocessors. Where WiThings really shines is the integrated hardware accessories (sold separately) that can track unique data without user intervention..


If users are wanting to track nutrition and calories, the free MyFitness Pal app is a great choice. MyFitness Pal incorporates a large food database that can automatically fill nutrition information just by scanning a package’s barcode…

One of the most popular fitness tracking band lines on the market, Jawbone’s UP series boasts a number of tools to keep users healthy. The UP app was recently updated to integrate with HealthKit to track activity and add a sleep tracker capable of sending your data to the Health app. The software also provides personal coaching tips to achieve your personal fitness goals…


Another popular line of activity trackers come from Fitbit. Unfortunately, Fitbit has refused to natively incorporate HealthKit into its app. Instead, a third-party developer has created an unofficial app called Sync Solver for Fitbit that will read the data from your online Fitbit account and send it to HealthKit…

The Bowflex line of exercise equipment made by Nautilus has added HealthKit support for its app that will allow users to see workout stats in Apple’s Health app. Information such as workout duration, heart rate, calories burned and distance traveled are recorded…

Unlike many other fitness apps that track nutrition and activity, BACtrack integrates with a mobile breathalyzer that can measure your blood-alcohol content and send the stats to your iPhone…


With numerous accessories and one of the most mature platforms for fitness, the free Nike+ Running app can send your distance traveled, calories burned, run duration and more to HealthKit…


So there you go. We’ve been users of various pieces of the Withings kaboodle since the first scale shipped wow is it that long ago? and quite recommend them for keeping tabs on your various measurements. The other stuff mentioned above, well we’re sure it’s nice too, as always let us know any strong feelings you might have one way or the other!

And while we’re on the topic of HealthKit, the prolifically inquisitive Natasha The Robot has some intros here if you feel like programming your own healthy app:

HealthKit: Let’s Talk About Units

HealthKit: Asking For Identifying Information

HealthKit: Getting Fitness Data

Which is about all we’ve noticed in the way of tutorials — even the generally exhaustive Wenderlich iOS <N> By Tutorials didn’t have anything on HealthKit this time out. There’s a few testbeds and adapters on Github, but nothing jumping out as compelling. Hmmmm, wonder why that striking lack of interest from the development community in healthy apps. Hey, think how good the testing would be for you!

UPDATES:

HealthKit Tutorial with Swift: Getting Started

HealthKit Tutorial with Swift: Workouts

Continue Reading →
0

Prerelease App Store Testing

What, you say, aren’t “prerelease” and “App Store” definitionally contradictory? Why no, no in fact they are not!

How to Test the Final App Binary before It Is Released on the App Store

  1. Manually release the app…
  2. Submit your app for review as usual…
  3. Pending developer release…

… At this point the Promo Codes link appears at the bottom of the app details page.

And apparently promo codes can be requested and work just fine even when the app isn’t technically released yet! Aside from this small caveat:

… when the promo code is for an update, iOS sometimes gets confused. It’s not consistent. But sometimes the App Store app shows an Update button right after the download is complete. It’s not clear to me if tapping the Update button will download the update you really want, or if it will “update” to the latest public release available on the App Store. Sometimes the whole process fails and my update is nowhere to be seen. So don’t be dismayed if need to burn more than one promo code to get the binary you want downloaded onto your device…

Still, it’s pretty awesome to be able to do a final final final test that no showstoppers slipped through into the actual App Store binary and reduce your launch day stress by several orders of magnitude, tisn’t it now?

Continue Reading →
1

NSFileCoordinated iOS IPC

IOS IPC? For reals? Well, for a “your app group” definition of “P”, yep pretty much:

Sharing data between iOS apps and app extensions

You’ll want to use NSFileCoordinator any time you want to read or write your shared files. You’ll also want to implement NSFilePresenter any time you need to know if a file has changed. These were introduced as companions to iCloud, where both your app and the iCloud daemon might want to access the same file. They’re not iCloud specific, though…

There’s still no full IPC mechanism on iOS. NSDistributedNotification hasn’t made the jump from OS X to iOS and probably never will. But file coordination and presentation can serve the same purpose, as long as the apps use the same app group.

When I was adding file coordination and presentation to my demo app, I realized that they could also be used for notifications between an app and its extensions. If one of them does a coordinated write while the other is using a file presenter for the file, the call to presentedItemDidChange happens almost instantly. Notification is the whole purpose of that method, so it makes sense it would work this way. I want to be notified if a specific file changes, and that’s how I get the notification.

But you don’t need to care about the file contents to be interested in notifications. If you just want a notification, choose a file name and use it as the notification mechanism. Any time one process needs to notify the other, make a change to the file. The other will get a file presenter call, and the notification is complete. It feels sort of like a hack but really this is exactly how the API is designed to work.

Cool beans! That opens up the extension useful problem space a good deal, doesn’t it now?

h/t: Michael Tsai!

UPDATES:

Introducing MMWormwhole

Continue Reading →
0

Demassify View Controllers

Nice writeup here on formalizing pattern names for approaches to avoiding that Massive View Controller problem it’s all too easy to slip into:

8 Patterns to Help You Destroy Massive View Controller

View controllers become gargantuan because they’re doing too many things. Keyboard management, user input, data transformation, view allocation — which of these is really the purview of the view controller? Which should be delegated to other objects? …

Data Source

The Data Source Pattern is a way of isolating the logic around which objects live behind what index paths. Particularly in complicated table views, it can be useful to remove all of the logic of “Which cells are visible under these conditions?” from your view controller…

Standard Composition

View controllers can be composed using the View Controller Containment APIs introduced in iOS 5. If your view controller is composed of several logical units that could each be their own view controller, consider using Composition to break them apart…

Smarter Views

If you’re allocating all of your view controller’s subviews inside of the view controller’s class, you may consider using a Smarter View. UIViewController defaults to using UIView for it’s view property, but you can override it with your own view…

Presenter

The Presenter Pattern wraps a model object, transforms its properties for display, and exposes messages for those transformed properties…

Binding pattern

In method form, this might be called -configureView. The Binding Pattern updates a view with model data as it changes…

Interaction pattern

Interactions often include an initial user input (like a button press), optional additional user input (“Are you sure you want to X?”), and then some activity, like a network request or state change. The entire lifecycle of that operation can be wrapped up inside the Interaction Object…

Keyboard Manager

Updating the view after the keyboard state changes is another concern that is classically stuck in the view controller, but this responsibility can easily be shifted in a Keyboard Manager. ..

Navigator

Navigating from screen to screen is normally done with a call to -pushViewController:animated:. As these transitions get more complicated, you can delegate this task to a Navigator object..

h/t: Michael Tsai!

And while you’re contemplating how to split things up into maintainability, also check out

Clean Up The Application Delegate With Initializers

Continue Reading →
0

Watch Out!

Just in case you were off in rural Bangladesh like us last week, the Apple WatchKit SDK is out:

Developers, Start Designing Apps for Apple Watch

WatchKit Developer Page

Video Overview of WatchKit

Apple Watch Human Interface Guidelines

WatchKit Programming Guide

Lister (for Apple Watch, iOS, and OS X)

Apple Watch Design Resources

And here’s a survey of some immediate reactions:

What you need to know about WatchKit

Pretty cool stuff, right?

Initial Impressions for WatchKit

… I am very pleasantly surprised by how capable it is … Rather than just saying we only get Glances and Notifications, we get to build actual, useful watch apps …

WatchKit: Initial Impressions

Overall, WatchKit offers far more than I expected in this initial release … From the new Apple Watch-specific controls, to glances, actionable notifications, deep linking with Handoff, image caching and more — as a developer, this is the kind of stuff that gets me excited!

A day with WATCH

David Smith put it best: there’s a lot more here than most of us expected…

How To Create A “Hello World” WatchKit App and WatchKit: Let’s Create a Table and WatchKit: Page-Based Navigation and WatchKit: Hierarchical Navigation and WatchKit: Accessing Data From Your iOS App and WatchKit: The First Glance at Glances and WatchKit: Let’s Add a Menu [and WatchKit: Customizing the Global Tint and …]

I can’t get enough of WatchKit. Sooooo much to learn!

WatchKit Tutorial with Swift: Getting Started

iOS developers rejoice – WatchKit is finally here!

Apple’s new WatchKit SDK hints at the future of Apple Watch’s apps

WatchKit is here. What does it mean?

Well-nigh euphoric, you people!

UPDATES:

Watch Hackathon Live

Hello WatchKit! Learn how to build an Apple Watch app

jblocksom / WristComms: “WatchKit extension / host app communications example.”

Thoughts on WatchKit

Confirmed: Apple Watch Runs iOS

Apple’s San Francisco Typeface

WatchKit Extension Problem: Sharing a Core Data Store Can Lead to Duplicate Entries

johnno1962 / WatchkitCurrency: “Swift Currency Convertor for iWatch with flexible interface.”

frosty / Flipbook: “A Swift tool to render UIViews to image sequences for use with WatchKit…”

azamsharp / WatchNotes: “Notes on your wrist!”

Positioning Tutorial in WatchKit

WatchKit Swift Tutorial – Download Xcode 6.2 Beta and Start Making Apple Watch Apps

Introducing As I Learn WatchKit (AILW):

  1. Visualizing Watch Apps
  2. Learning in the Dev Forums
  3. Building a basic WatchKit App
  4. Economics of WatchKit Apps

NSHipster’s Watch​Kit

Top 5 Things to Consider When Designing for Apple Watch

How to write a WatchKit Counter App in Swift

WKInterfaceTimer – Add a Countdown to a Swift WatchKit App

Continue Reading →
0

AppStop The Madness

Just need to throw something, anything, up for a landing page? AppStop has your back:

Create a landing page for your iPhone app, using the info you’ve already submitted to the App Store

Just enter an App Store URL below, and I’ll generate a customizable landing page for your app, that you can fork on GitHub and deploy on github.io or your own domain…

You can also scrape info from iTunes Connect for unreleased apps. So if you want to do some A/B testing on possible descriptions, screenshots, etc. this would be a pretty darn convenient way to go about setting that up, looks like!

h/t: iOS Dev Tools Weekly!

Continue Reading →
0

Stand Back and Deliver

Now here’s some awesomeness topped with awesome sauce and a side of awesome for reducing your blood pressure:

KrauseFx / deliver: Deploy screenshots, app metadata and app updates to the App Store using just one command.

What, seriously? Apparently so:

Features

  • Upload hundreds of screenshots with different languages from different devices
  • Upload a new ipa file to iTunes Connect without Xcode from any computer
  • Update app metadata
  • Easily implement a real Continuous Deployment process
  • Store the configuration in git to easily deploy from any computer, including your Continuous Integration server (e.g. Jenkins)
  • Get a PDF preview of the fetched metadata before uploading the app metadata and screenshots to Apple: Example Preview (Yes, those are screenshots taken for all screen sizes)

Yeah, we’ve been in deployment-challenged places where we really, seriously, needed that tool…

h/t: iOS Dev Weekly!

UPDATES:

@KrauseFx seems to have the mission Make Everything Deployment-Related Work — also check out

KrauseFx / sigh: “Because you would rather spend your time building stuff than fighting provisioning.”

KrauseFx / snapshot: “Create hundreds of screenshots of your iPhone app… while doing something else.”

KrauseFx / frameit: “Want a device frame around your screenshot? Do it in an instant!”

KrauseFx / PEM: “Tired of manually creating and maintaining your push certification profiles?”

Continue Reading →
0

Hakawai And Away

This is well worth taking a look at if you’re outgrowing UITextView’s functionality, LinkedIn is the latest company to kick out some awesome source to the community:

Introducing Hakawai – a powerful, mentions-enabled text view for iOS

Text Transformers

Hakawai provides block-based APIs for working with the contents of a text view. Text transformers are methods which take in special blocks. These blocks always take as an argument an attributed string (representing the initial state of the text), and return another attributed string (representing the final state of the text). Hakawai also supports attribute transformers, which work similarly…

Abstraction Layer

The experimental Abstraction Layer feature is a way to provide text view users with a higher-level change notification API than currently offered by the built-in UITextViewDelegate. There are five main types of notifications, each with associated data…

Extras

Hakawai comes with a host of extras, including (but not limited to):

  • An API for easily adding and removing accessory views from the text view
  • An API for temporarily locking the focus of the text view to the top or bottom of the text view
  • An API for rejecting autocorrect suggestions, and for working with the text view’s autocorrection, auto-capitalization, and spell checking state
  • A convenience API for working with characters and words at a given location
  • A custom text container and layout manager
  • Support for custom text formatting through custom attributes, including a pre-built attribute showcased in the mentions plug-in

Plug-ins

Hakawai supports plug-ins, which are code modules that can be selectively activated and deactivated at run-time to provide the text view with additional functionality…

Mentions

Mentions is a plug-in for creating ‘mentions’, annotations in a text view which might correspond to names of individuals or entities…

OK, that’s some serious UITextView enhancement. Check it out on github!

(And while you’re in the LinkedIn neighbourhood over there, background fetch scheduling library Selene is worth a gander as well.)

h/t: ManiacDev!

Continue Reading →
0
Page 1 of 118 12345...»