fbpx

August 22, 2019

WWDC 2019 Keynote Recap: This is Only the Beginning

One thing is for sure. Apple is working on something big. We’re not even exactly sure how big just yet.

Read more

September 25, 2017

Blast Off to Planet SRAM

Bottle Rocket is best known for designing and developing mission-critical mobile experiences for some of the world’s most discriminating brands. But for one very special cause, we went back to our roots in mobile gaming to launch a game that is something very special. Now available from Bottle Rocket and the Make-A-Wish Foundation: Planet SRAM, a single-player shooter that pits players against waves of out-of-this-world creatures like giant tree monsters that shoot snakes from their heads.

Those tree monsters and snakes? We didn’t come up with those. Planet SRAM comes from the mind of 11-year-old Hunter Allis, who met Bottle Rocket through Make-A-Wish. Reflecting on Planet SRAM’s development, Bottle Rocket Founder and CEO Calvin Carter said, “This journey allowed us to do even more of what we love and share our craft with someone that loves it just as much as we do. We are honored and humbled to have had this opportunity to serve a wonderful and deserving family, as well as a truly impactful organization.”

Download Planet SRAM now on iOS for an exciting and action-packed look into the super creative mind of a boy with passion and a whole lot of heart.

July 10, 2017

Engineering Jedi: iOS Breakpoint Secret Sauce for Better Debugging

As most iOS developers are aware, breakpoints are an essential tool to debugging apps. In Xcode, setting a breakpoint is as easy as clicking on the line number that you want to pause app execution on. When execution is paused, you can view the state of any variables in scope, issue commands to the debugger, and even step through your code line-by-line to watch the execution flow unfold before your eyes.

gif of setting up a point break in xcode

To make your debugging experience with breakpoints even better, we’ll cover the 5 breakpoints that every iOS developer should enable. If you’re a seasoned iOS developer, you may already know about some of these. If you’re new to iOS development, don’t worry, we’ll start with a quick overview of how to setup and use breakpoints.

The Breakpoint Navigator

Managing breakpoints in Xcode is super simple. Enter the Breakpoint Navigator, which lives in the Navigator Panel on the left side of Xcode. Here, you will see all the breakpoints currently set in your project. Click on the name of the method to jump right to that line of code or click on the blue breakpoint icon to enable/disable the breakpoint. Removing a breakpoint is as easy as dragging it outside of the panel.

screenshot of breakpoint navigator UI

Symbolic Breakpoints

While it’s very useful to set breakpoints on specific lines of code, it can also be helpful to have some breakpoints function globally. Symbolic breakpoints are breakpoints that will trigger on certain conditions, like any time a certain method is called on a class. Adding a symbolic breakpoint is achieved by clicking the "+" icon at the lower left of the Breakpoint Navigator and selecting “Symbolic Breakpoint”.

selecting symbolic breakpoint in breakpoint navigator

The Top 5 Xcode Breakpoints

Here we are, the secret sauce! Use the "+" button at the bottom left of the Breakpoint Navigator to add the following breakpoints:

All Objective-C Exceptions

This breakpoint catches exceptions thrown by Objective-C code. Due to the current transition to Swift, this breakpoint isn’t as useful as it once was, but it can still be handy if your app contains any Objective-C code or uses third-party libraries that are written in Objective-C.

Turn it on:

  1. Add an "Exception Breakpoint"
  2. Change the "Exception" value from "All" to "Objective-C"
  3. Click "Add Action" to add a "Debugger Command" action
  4. Type in "po $arg1" for the command. This will automatically print the relevant error to the console when you encounter an exception
adding in all breakpoint exceptions

-[UIApplication main]

This puts a breakpoint at the entry point to your application’s launch. We’ll be using the "Debugger Command" action again to have our debugger import UIKit, which will make the debugger much more aware of properties and methods on things like UIView. This will make it easier to interact with and print properties on these types of classes when you’re debugging.

Turn it on:

  1. Add a "Symbolic Breakpoint"
  2. Type in "-[UIApplication main]" for the Symbol
  3. Add a "Debugger Command" action
  4. Enter "expr @import UIKit" for the command
  5. Check "Automatically continue after evaluating actions" — this will ensure that your app doesn’t immediately pause execution every time you build and run
adding breakpoint in debugger command

UIViewAlertForUnsatisfiableConstraints

This breakpoint helps you catch undesirable constraint configurations. If you’ve ever seen the “unable to simultaneously satisfy constraints” error message in the console, it will suggest you set a breakpoint here. Usually, these situations don’t cause obvious visual errors, but they should be fixed since we don’t know how they will be handled in future versions of iOS.

setting up UIViewAlertForUnsatisfiableConstraints

Turn it on:

  1. Add a "Symbolic Breakpoint"
  2. Type in "UIViewAlertForUnsatisfiableConstraints" for the Symbol

NOTE: In Xcode 9, there is a new "Constraint Error" breakpoint that can be used instead of manually creating this symbolic breakpoint.

using constraint error breakpoint instead of using UIViewAlertForUnsatisfiableConstraints

-[UIView(UIConstraintBasedLayout) _viewHierarchyUnpreparedForConstraint:]

This is another breakpoint to help you identify Auto Layout constraint problems. Hitting this breakpoint is typically much less common than hitting the "UIViewAlertForUnsatisfiableConstraints" breakpoint above, but it’s still good to go ahead and make sure you turn this one on.

Turn it on:

  1. Add a "Symbolic Breakpoint"
  2. Enter "-[UIView(UIConstraintBasedLayout) _viewHierarchyUnpreparedForConstraint:]" for the Symbol
breakpoint to identify Auto Layout constraint issues

UICollectionViewFlowLayoutBreakForInvalidSizes

This last breakpoint helps catch layout errors in UICollectionView’s flow layout. This is especially useful if you ever work with self-sizing collection view cells or create your own flow layout subclass.

Turn it on:

  1. Add a "Symbolic Breakpoint"
  2. Enter "UICollectionViewFlowLayoutBreakForInvalidSizes" for the Symbol
catching errors in UICollectionView's flow layout

One More Thing - User Breakpoints

As you can imagine, it can be quite tedious and time consuming to create all five of these breakpoints for every project you work on. This is where the power of promoting your project breakpoints to "User Breakpoints" comes into play. User Breakpoints will automatically be present in any Xcode project you open! To convert a breakpoint to a user breakpoint, right-click on the breakpoint and choose "Move Breakpoint To" -> "User."

When everything is said and done, you should now have five breakpoints listed under "User" in the Breakpoint Navigator. These breakpoints will be set up for any Xcode project you open from here on out. Also, notice that any project-specific breakpoints will be listed above these "User" breakpoints, under your project’s name.

checking the 5 breakpoints in breakpoint navigator

June 20, 2017

Engineering Jedi: Five(ish) Things to Prepare for with iOS 11

Now that WWDC 2017 has concluded, it's time to evaluate any apps you currently have in the App Store, as well as any soon to be released, to ensure that they're ready for the new version of iOS. It's not a very long list, but the changes are important.

  1. Prepare for the new App Store look and feel. Your app will get a new presentation style, and you're encouraged more than ever to use video to demonstrate the app. Also, reviews no longer reset with each submission to the App Store, so it's a good idea to decide on what interval you wish to reset those ratings averages. Related to the new store: you may need to remove any existing mechanisms prompting the user to rate the app. Starting now, only the built-in functionality is allowed for prompting the user. You can still use any techniques you prefer to decide when the stock technology should present the request, but be aware that the user will only receive that prompt at most three times per year, and may never see it due to choices that they've made.
  2. Apple has provided a new set of tools for determining where items should be placed on screen. Hopefully your app is already using AutoLayout, and is prepared for multiple device layouts using size classes. These have been around for a while, and should be considered the bare minimum for supporting modern devices. In addition, there's now a concept of the "safe area" on an iOS device. This is the area of the screen where critical user interactions should take place. This concept is common for development for televisions to account for overscan, but is new for iOS development. This may indicate that in future devices, interactive elements might not work if they're too close to the edge of the screen. Prepare now, and you can ensure that future devices won't hamper your users' experiences.
  3. In iOS 11, users can allow location services either in-app only or at any time. Some apps are designed to work only if they have access to the user's location at all times. These apps need to reconsider their location usage strategy and adapt to this new requirement.
  4. If your app uses a custom typeface, it is now much simpler to support dynamic type with those custom typefaces. This is often the first step in making your app accessible, and now you can easily set up your app to handle this combination of dynamic type and accessibility. If you had done this using some arbitrary custom code before, you can now handle it more completely and safely.
  5. Finally, if your app runs on the iPad, the time has never been more appropriate to adopt multitasking. With the new multitasking features and drag-and-drop support, it's more important than ever to support these techniques, so that your app remains relevant to advanced users of these devices.

Once you've completed these must-do tasks, there are a few other things that can help make your app more modern and relevant. Generally speaking, these are more technical, so you don't necessarily need to keep going from this point.

The first of these optional items would be replacing any icons in your app with vector art. You've been able to use PDF vector art to provide images for quite some time, and there are additional areas where these will be used (such as accessibility hints for toolbars). This should be a straightforward change for ongoing development.

The second optional item would be to simplify any of your custom JSON transformations using the new Swift Codable protocol. This functionality should be backward compatible back to iOS 6, and this can give you a simpler, lighter-weight application.

If you support a user login system on the web as well as your app, you should definitely prepare to share those logins using the new password support. There are very few steps needed to complete these logins, and it can allow the user to use more secure passwords.

You should consider updating any animations in your app that are frame-locked to 60Hz. Having animations locked to a particular refresh rate can cause less-than-ideal appearance on the most recent iPad pro, which has a 120Hz refresh rate. Future devices may have refresh rates other than 60Hz as well, so preparing for that future would be a wise move.

Hopefully you're inspired to get your app ready for the next version of iOS. If you get started now, this is a very light lift for most apps that have been well maintained. Your users are certain to be appreciative of your app if it's kept current with the latest developments.

Want to make sure your app is ready for iOS 11? Reach out and let’s talk about it.

June 19, 2017

Top Takeaways from WWDC 2017 that Weren’t in the Keynote

While there were a lot of big announcements during this year’s WWDC Keynote, there were even more our Rocketeers learned during the sessions following it. Some of these barely made an appearance at the conference, but we think they’re some of the most exciting updates yet. If you are interested in learning more about these topics, you are also welcome to watch our webinar that aired Wednesday, June 14, 2017.  Click here to watch.

Business Chat Could Change Everything

Any business large enough to have a call center or customer support group should take note. Business Chat opens a support line directly in iMessages making it easier than ever help solve everyday customer problems with a tool that’s familiar to everyone. This interaction can begin from a button in an app, a link on your website, a CTA in an order confirmation email, or pretty much anywhere else you’d want to put it. Within the chat, you can share files, images, product images and/or videos, and much more. For example, let’s say a customer wanted to upgrade or change their seat on a flight – the airline could send them a layout of the seats available and can even charge for the upgrade through Apple Pay directly in iMessage. If you wanted to schedule a meeting, the details will be saved directly to the calendar.

Business Chat is available today and already integrates with LivePerson, Salesforce, Nuance, and Genesys.

CoreNFC Now Open to Developers

Near Field Communication (NFC) has been around for several years now, and the odds are good that you’ve used it and didn’t even know. NFC can be used for a wide range of applications, but to date it has primarily been used for mobile payment through apps such as Apple Pay. However, that may change very soon as Apple has officially opened the iPhone’s NFC functionality to developers. In true Apple style, they have taken every precaution to ensure user data remains secure. Each session must be initiated by the user and developers can only read, not write, data from an NFC tag. This means there will never be an accidental scan or possibility of someone pulling information from your phone. Brands will be able to leverage NFC for everything from presenting more information about a painting in a museum to adding items to an account in a hotel – but they will not be able to bill you directly from the interaction.

QR Reader Added to Default Camera App

In the United States, QR code sightings can be uncommon depending on where you live. In eastern markets, they are much more common. QR codes failed to reach widespread adoption in America because some didn’t know what to do with them and others didn’t see the value in downloading an app specifically for reading them. Now that Apple has integrated a QR reader into the default Camera app, that could change. However, western adoption of QR codes relies on content creators and advertisers just as much as, if not more than, users interacting with them. QR codes can be used for a wide range of applications such as sharing a playlist, opening a YouTube video, downloading an app, adding an item to a cart, and much more. The more interesting the experience, the more likely users are to give QR codes a try. To best leverage them, think guerilla marketing mixed with surprise and delight – people should feel as though they found something special rather than an advertisement, and where it takes them should almost be a reward.

CoreML Brings Machine Learning to the iPhone

The ways Google and Apple have approached artificial intelligence (AI) and machine learning (ML) are very different. One of the biggest differences is where the “magic” happens. Google’s approach is in the cloud while Apple’s is on-device. Processing the information on the iPhone itself not only provides a much faster experience but a much more private one. CoreML has three offerings at the moment, including Vision for image analysis, Foundation for language processing, and GameplayKit for NPC (non-player character) behavior, pathfinding, and more. While GameplayKit will mostly be used by game developers, Vision and Foundation can be used for a multitude of applications. For example, Vision can be used to recognize barcodes. You could use Vision to show more information about a product after a consumer scans the barcode or, with some training, teach Siri to recognize the product itself so that they can simply take a picture of the product to learn more.

Siri’s New Extensions

Three new extensions are now available to developers through SiriKit. For apps that allow you to make or check off items on a list, Siri can now be integrated into the app to allow users to take actions around those lists. The other two extensions, Points and Domains, can be leveraged for rewards and loyalty points. Points will allow users to ask Siri questions, such as “do I have enough points to book a flight to LA?” and Domains will allow users to scan visual codes such as loyalty points on a purchase to have them automatically added to your account in the app. With Siri’s new extensions, the customer experience in apps can be improved greatly as Siri makes it easier for consumers to keep track and add reward points to their accounts.

The App Store Gets an Overhaul

There are some big changes coming to the App Store. First off, Apple has completely redesigned the store and added several sections to improve the app discovery experience. There will be three primary sections to the store – Apps, Games, and Today. To make it even easier to decide if you want to download an app, Apple has also added the option for developers to upload up to three videos to showcase gameplay, features, and more in apps. What’s even more exciting is that Apple now allows developers to decide if they want to reset their reviews when uploading a new version of an app. Believe it or not, some developers would allow bugs to go unfixed for weeks if they had high ratings for their app to avoid having the ratings potentially drop. Now hotfixes are much less stressful for brands and developers as they can effectively push out several builds of an app and retain their ratings and reviews.

Check back for more updates as these new features and tools become available. In the meantime, please feel free to contact us with any other questions you may have.

Bottle Rocket Logo
digital transformation redefined.

Bottle Rocket is a digital transformation company that leverages a unique Connected Customer mindset to build technology-enabled solutions that propel businesses and delight customers.

© 2019 Bottle Rocket. All Rights Reserved.