Preventing Spam iCloud Calendar Invites

I woke up this morning seeing two notifications of calendar appointments I just couldn't miss. [sarcasm] Annoying, right? Here's the best part. No matter what I do - Accept, Maybe, Decline - the sender of the spam appointment receives the notification of my action. There's no way to just simply delete the damn invitation from your calendar without sending the reply! Well I guess that means 章兴言 & 历昭 are going to get a sad decline from me. ...

November 25, 2016 · 2 min · Aaron

Swizzling in AFNetworking somehow breaks iOS' NSDoubleLocalizedStrings

Tools to Help Test LocalizationApple provides some pretty slick tools to help with localization testing in your apps. I had completely forgotten about two launch parameters that make it possible to find those pesky layout problems early: NSDoubleLocalizedStrings - Any calls made to NSLocalizedString will double the strings to simulate languages with longer words, like German.NSShowNonLocalizedStrings - Replaces any text from NSLocalizedString that doesn't have an entry in a strings file.AppleTextDirection - Simulates a Left to Right language.In Xcode 7 there is an easier way to provide these options. Edit the scheme for your app, click on the Run section, then the Options tab. You'll see Application Language has two options - Double Length Pseudolanguage and Right to Left Pseudolanguage. There is also a check box for Show non-localized strings. These three options are equivalent to the launch arguments above. ...

January 22, 2016 · 3 min · Aaron

Rediscovering CouchDB

I'm currently writing the materials for my presentation on Core Data & Synchronization of data for RWDevCon 2016. One of the requirements for the demonstration app is a web service that provides a REST API to sync with. One of the requirements of the talk is that I cannot rely upon an Internet connection. Every person going through the tutorial needs to be able to bring up a local web service to following along with while coding the iOS app on their machine. ...

November 11, 2015 · 2 min · Aaron

iOS 9 Good Morning & Afternoon Weirdness

I had a user write in to get some help clarifying a behavior with the Migraine Diary app I wrote on iOS 9. The user explained that every morning she turns on her phone and Migraine Diary shows on the screen and when she opens it, it tells her Good Morning. The little icon sounded like Continuation or App Suggestions neither of which Migraine Diary supports. I asked for a screenshot and got this: ...

October 5, 2015 · 1 min · Aaron

Recording Your iOS Device with QuickTime Player

The TaskYou need to record your iPhone or iPad's screen to show someone a bug or demo a feature to your customers. In the past the only method available was to use a program like Reflector to emulate an AirPlay/Apple TV and then record on your machine. This works fairly decently although the quality over WiFi isn't very good leaving you with a less-than-crisp recording. Reflector also isn't free which makes it difficult for users in the wild to record bugs. ...

April 2, 2015 · 3 min · Aaron

Providing Emergency Contacts with iOS 8

The ProblemSomething that has been missing on iOS for a long time is a reliable way to provide emergency contact information. Imagine you're out and about and you end up having an accident or have an acute attack from a known medical condition you have. We all tend to carry our mobile phones with us. Most emergency personnel are trained to review personal data in your wallet/purse and now mobile phones. The issue is most of us have a lock code on our devices, preventing access to potential life-saving communication with a loved one about your medical condition. ...

November 3, 2014 · 2 min · Aaron

Core Data Object IDs can change

I thought I knew a lot about Core Data with having used it a lot over the past years. Today, I learned something new that I feel like I should have known for a long time. NSManagedObjectIDs can change. Seriously. If you want a different notion of identity, you can just add an UUID string as an attribute to your entity. A separate mapping table is not recommend. The 2 apps should agree to use the same UUIDs for the same identities.BenRef: https://devforums.apple.com/message/480640#480640 ...

October 22, 2014 · 1 min · Aaron

Live Storm Chasing App

Enjoy chasing storms from your couch like me? There's a great app called "TVNweather Live Storm Chasing" that I've been using to watch live streams from actual storm chasers out in the field. You'll see names like Reed Timmer (TornadoVideos.net) and the team running the Dominator 2. TVNweather Live Storm Chasing for iOS The app itself needs some work with stability, but the collection of active streams is incredibly handy and fun to watch. An Android version is coming soon as well. Until then you can also watch on their site at http://tvnweather.com/live.

April 28, 2014 · 1 min · Aaron

On the Importance of Glue

Glue is the thing that ... well ... glues everything together. You don't see glue (if the product is made right) but it plays an important role in the overall satisfaction with the product. If you buy a bird house that has bad gluing technique or not enough glue, you will be upset when the first bird flattens the house. The same hold trues for mobile apps as well as web and desktop applications. For sake of this discussion, I'm limiting myself to mobile apps and mentioning some specific iOS technologies. ...

April 25, 2014 · 3 min · Aaron

Stop Being Lazy with Accessibility

I'm making a pledge as a software developer to think of accessibility with every change I make. My first step was to turn on iOS' VoiceOver and test everything I'm working on with it. In the first five minutes of using it, I've discovered so many necessary improvements to make the app even useful for someone who has trouble seeing. There are many more accessibility tools than VoiceOver (like Dynamic Type) that should also be on your list to try. Baby steps. ...

April 17, 2014 · 1 min · Aaron