Under The BridgeUnder The Bridge

Musings
Offline Networking Management

So we have this new app that synchronizes all its operations with the website backend; and what, what, we ask rhetorically, do you figure the immediate cacophony of demand is?

Why, yes. Yes, it’s “Make checking in work offline!” Of course it is.

Now, 1.0 does cache all the last retrieved data so we’ve made a start on offline operation…

The Many Offline Options for iOS Apps

How to Design Offline-first Approach in a Mobile App

… so in this context, “work offline” is going to be defined as “queue database transactions to be applied to the server once connectivity is established,” as opposed to the current strategy of “call the API and do nothing if it fails”. We’re going to break that into a series of steps:

1) Currently our database transactions are UI state driven, with local changes applied only after online success, with a modal dialog forcing the user to wait. This is expedient, but annoying, and fallible.

So what we’ll do is encapsulate all our transactions into undoable objects, apply them to the local database immediately, and queue them for retry or cancel, ie. undo, if the online synchronization fails. Since having a functioning Undo implementation is a fine idea in any case, and helps us abstract out this rearchitecting nicely. If like us you haven’t implemented Undo recently (like in Swift at all) here’s some good tips on that:

Adding Undo and Redo support to iOS

UndoManager Tutorial: How to Implement With Swift Value Types

2) We’re going to need some awareness of when connectivity is established, to trigger applying these transactions to the server. Alamofire our networking layer has a simple one, implemented like thousands of others on top of ancient code. However, it has its issues … and there is a better option these days (iOS 12+): NWPathMonitor

Network Framework in iOS: How to Monitor Network Status Changes with sample code

Detecting Internet Access on iOS 12+ … now supported in Connectivity along with Solving the Captive Portal Problem. And backwards compatible Reachability support. So that looks like an excellent choice for network awareness needs!

And as an aside here, if you want to prompt people who turn off your app’s mobile data to turn it back on, check out

Handle disabled mobile data setting on iOS

However, for this particular application we can see that being a popular setting seeing as it’s all about foreign travel and all, so we’re not going to fuss about it as only working on wifi would be very likely indeed to be the users’ preferred mode of operation.

Speaking of operations, that brings us to:

3) A serializable and resumable and retryable queue for managing these operations

Right now we have a pretty simple asynchronous Operation wrapper for simple serial queuing of background data refresh operations, not completely unlike the network Operations described here,

Building a Networking Layer with Operations

Download files sequentially using URLSession inside OperationQueue

and as mentioned in the first point we’ll be making their local transactions undoable; but we’re going to need something a little more high powered than a stock memory OperationQueue to handle these, won’t we? Well, there are a number of possibilities mentioned that have various levels of support for persistence and awareness mentioned over in that promises roundup we did long before Combine was on the horizon, but here is one of particular interest:

OfflineRequestManager: Pod for Offline Network Request Management

OfflineRequestManager is a Swift framework for ensuring that network requests are sent even if the device is offline or the app is terminated.

OfflineRequestManager works by enqueuing OfflineRequest objects wrapping the network request being performed and observering the current network reachability using Alamofire. If the app is already online, then it will be performed immediately…

…! If a network-related error is passed into the completion block, then the OfflineRequestManager will retain the request and try again later. Other errors will by default remove the request from the queue, but there are optional delegate methods to allow for adjustment and resubmission if needed.

Realistically, there will likely be some data associated with the request. You also may want to be sure that the request is sent up even if the app is quit or (heaven forbid!) crashes…

Well, that would be … pretty much our exact feature requirements, actually! Hasn’t been updated in a year from Swift 4.0, so we’ll reimplement it in Swift 5.1 and add NWPathMonitor savviness and all, but a modernization is quite a less imposing task than designing from scratch, yes?

… and as a stretch goal, we’ll see about it taking advantage of background tasks too. You check out that new framework?

Managing background tasks with the new Task Scheduler in iOS 13

How to use BackgroundTasks framework to keep your iOS app content up to date?

So definitely, a superlatively up to date network request manager would also take advantage of that for recurring tasks!

Kowalski, Analytics!

So it’s been a little while since we last looked at analytics for your iOS app, and as it happens we have a new one just out that could use some sober second thought on its analysis strategy going forward; let’s take a look at that today, shall we?

Kowalski

 

First off, since you don’t have to do any work to get them it’s always a good idea to keep abreast of the latest developments in App Store Connect App Analytics – especially since there’s a bunch there that you can’t get with any other service! But, since you can’t report any custom events so they’re not very interesting development-wise, we’ll just remind you of the documentation and move right along, to consider in detail the current crop of services that are FREE! and UNLIMITED! that being the tier of service that us scrappy Indies are most interested in naturally!

So, last time we were checking out this analytics thing, the buzz was all about Fabric Answers

The best of Answers realtime analytics is now part of Firebase. New apps should use Google Analytics for Firebase…

Well then. How about that old standby for website centric organizations, Google Analytics? Oh, look they’re shutting that down too this Hallowe’en…

To use the latest generation of app reporting in Google Analytics, you’ll need to install the Firebase SDK. If you do not have a Firebase project, go to firebase.google.com to get started. Once you have completed the setup, return to Google Analytics…

Huh. OK, if you’re tied into the Google ecosystem, or anything that was good it acquired, it seems your choice is very clear. Singular, in fact!

Personally, we’d prefer not to be tied into the Google ecosystem, particularly if we’re not depending on it for anything besides analytics, so we’ll leave the Firebase option off the table as long as possible. Besides, it isn’t completely free, although the free usage limits are generous.

For completely free to the developer, Flurry appears to still be the leader in app support suites, with push and real time analytics and advertising and remote config and all sorts of other goodies these days; come a long way since Peter Farago stopped by to say thanks for our first note on it over ten years ago and now he’s “GM & VP Flurry” at Verizon with a job description of “Making Flurry awesome(r)” so that would seem to indicate that it’s weathered its various acquisitions nicely and continues to be a solid choice going forward.

While we were developing this last project, we tried out Visual Studio App Center and were reasonably pleased with it in general — we didn’t get around to creating any specific events, but even the default session monitoring of App Center Analytics is providing useful information — it’s still maturing, but if you’re tied in to Microsoft platforms or the slowly migrating HockeyApp, this is the support suite for you! Without that, it doesn’t have a compelling use case … aside from being Not-Google. Should you find that compelling.

Another option, if you have a Facebook app as pretty much everyone does these days, is Facebook Analytics where if you’ve linked in the Facebook SDK you can see session info in Facebook’s Event Manager things logged with App Events for iOS. Not actually real time though, and you don’t get the push notifications and crash reporting and so forth of the above suites, so picking one of them is probably what most of us will be interested in. 

Now, there are a veritable plethora of other analytics services out there that don’t meet the FREE! and UNLIMITED! test, any number of which may be suited enough to your particular needs to be worth their investment: here’s a few of the better recentish roundups we looked at putting together post, check them out if you have a budget:

The Apps Have Spoken: Top 13 iOS App Analytics Platforms [2019]

Top 11 Mobile App Analytics Platforms in 2019 (Pricing Included)

Top 20 Mobile App Analytics Tools: Which is the best one for you?

Top App Analytics Tools (2019)

And if you don’t want a service at all but want to host your own analytics, an excellent start on that is this:

Countly Community Edition
Your very own, self hosted and open source desktop, web, mobile analytics server and SDKs

At least it looks like it. We wouldn’t know. We’re not into self-hosting or rolling our own of anything we can possibly get away with not. But if you are, check it out and let us know how that goes for you!

And finally, whichever one of these alternatives you pick first, it’s a solid bet that you’ll be called on to change it at some point, because that’s just the way it always works, isn’t it? Here is a nicely elegant post about creating

A modular analytics layer in Swift

We are going to build a layer that avoids using a static API, puts any backend APIs behind a protocol, uses the power of Swift enums and pairs each event with the pieces of data it needs to contain.

More specifically it should:

  • Be easy to report new and existing events.
  • Allow the data be sent to whichever analytics backend we wish to use, even multiple.
  • Be testable and mockable, allowing it to be an injected dependency.
  • Allow events to be reported from anywhere in the app, but encourage best practices.
  • Have compile-time safety of events and their properties…

Sounds like just about the way we like to put service wrappers around our dependencies yep — so whatever analytics you choose, check that out!

UPDATES:

8 Critical KPIs for Your App and How to Track Them

Assertions in Production for tracking internal errors

SmartlookConsentSDK for getting user consent

Shipped! MTP: The Extreme Travel Club

Yippee! Been a while since the Trollwerks foundries stamped out a new piece of work, but we’ve got one for you today: The Official iOS App of MTP.travel, the Most Traveled People extreme travel club!

MTP: The Extreme Travel Club 

On the Road to Everywhere

MTPscreenshots

 

MTP is the first mobile app for members of Most Traveled People, the world’s largest competitive travel community. MTP ranks the world’s top travelers by gender, age group, and home location.

MTP members on the web have long enjoyed the ability to measure their lifetime travel accomplishments against their peers, and challenge themselves towards new travel accomplishments. The MTP mobile app imbues all of the features of MTP on the web with geo-awareness, enabling a whole new level of immersive interaction…

And it’s all Open Source to boot — check it out on Github if you’d like to check out how we did something, have a bug you’d like to fix, or would like to use the MTP API in your own apps!

So that’s what we’ve been pretty much heads down into in all our spare moments in the months since the last post here, haven’t spared much time to check the news and all; anything of any interest happen in the iOS development world since around April? Been pretty quiet, no doubt?

Oh. Oh, my.

Well, we do have some catching up to do then don’t we? Seems the effort we put here into checking out the odd corners of Storyboard handling we hadn’t had occasion to delve into previously has not aged well. Ah well, it’ll be shipping for iOS 11 for a while yet; time enough to shake the web and see what falls out with whatever this “SwiftUI” thing is everyone seems very excited about for our next project!

iOS UI/UX Design Workflows

It’s been pretty much a given for a while that Sketch is the go to UI design tool of choice for our pretty, pretty apps — but we’ve never examined alternatives suited to the indie developer, or indeed the full workflow; so let’s look at some options for that today!

As a starting point, here’s the Nodes Design Stack 2018 for their selections from end to end of the design process:

Sketch – Complete design tool for static mockups

The keystone of app design tools, when we asked one of our designers what projects they used Sketch for, the response was: “Pretty much all of them…”

Abstract – Version control and seamless collaboration on design files

…then Abstract came along, offering the type of collaborative platform that developers had found in tools like Github. Now, Sketch files can be added to a project, and team members can jump on board, editing and saving their progress into a master file.

InVision – Prototyping focused on flows

Another indispensable entry. InVision picks up where Sketch leaves off, with an emphasis on functionality. Once they’ve got their static designs done in Sketch, our designers move over to InVision and start making a dummy prototype with some of the transitions and animations that go beyond just visuals to define UX…

Zeplin – Design handoff for development

Once your prototype is up and running, and everyone’s happy with the result, it’s time to hand over the reins to your developers. That’s when we use Zeplin…

Principle – State based prototyping tool for complex interaction

Once you’ve designed your interface, Principle is there to build on animated and interactive elements. It’s particularly adept at refining micro interactions, which play a big part in the overall experience of using an app…

All well and good, probably most large shops would nod along with that as being a solid stack, but that’s a pretty large investment for a little indie shop that’s you and a designer … at most … right? So, what kind of alternatives might you consider? Well, there is one in particular that we’ve noted with interest:

Adobe XD

Adobe XD is made for designers like you, by designers like us. It’s the fastest way to design, prototype, and share any user experience, from websites and mobile apps to voice interactions, and more. And it’s free.

Adobe XD reimagines the way designers create experiences with fast, intuitive tools that get you into your designs and get out of your way. Power up prototypes with voice. Automatically resize elements for different screens. Create amazing animations between artboards without timelines. It’s everything you need for what’s next in UX — and it’s only in XD.

Switch from Design to Prototype mode in a click, then drag wires between artboards to turn your wireframes into interactive prototypes. Make changes on the fly and see them on your phone. Share auto-saved cloud documents securely with your team from anywhere—you can even edit them offline.

Well, that seems to cover the entire stack — and at a price of FREE?! Mind you, that is for only one actively shared project at a time … but you probably are working on only one at a time, and it’s probably a good bet that a designer you work with has an Adobe CC subscription, so that wouldn’t apply to them. And between integrating other Adobe tools plus your entire design workflow in one tool … seems pretty unbeatable to us, really. But let’s see what real designers think, shall we?

Will Adobe XD kill Sketch and InVision?

Prototyping, design, and animation all happen in one space when using Adobe XD, meaning testing and iterating on design happens easier and much faster. The design process is effortless, interactions and animations all happen in context of each other allowing these disciplines to become part of the design process, rather than independently of each other. This is very powerful and enables design to happen at the speed of thought.

The ability to move from wireframe to hi-fidelity prototyping, to developer handoffs in one piece of software shows how much Adobe focuses on workflows. By making workflows simple and easy, they are addressing some of designers biggest pain points — something only Adobe is truly equipped to do via its software ecosystem…

Read the whole thing if you have time, but TL;DR the claim is that things go exactly as we would expect! So at the very least, next time we have a greenfield project, we’re going to actively look for a designer to work with us on an XD workflow.

There’s many other tools out there — check out 18 Of The Best Tools For Mobile App Designers for instance — but we’re going to stick with Adobe XD being the next one we’re going to deep dive into, hey the price is certainly right!

 

So much for tools; now, let’s turn to the philosophy of UX design to give you some inspiration when you sit down with them! Here’s some excellent articles we’ve noted:

How to design an Apple Design Award-winning app

For a mobile designer, winning an ADA trophy with its crisp aluminium body and touch-activated glowing Apple logo represents the pinnacle of design achievement. In Apple’s own words, the ADA’s recognise the “creative artistry and technical achievements of developers who reflect the best in design, innovation and technology on Apple platforms.”

So what does it take to end up on the receiving end of one of these coveted accolades? As the creative director and co-founder of a successful app development agency, I was more than a little bit curious to find out…

How To Design Emotional Interfaces For Boring Apps

When your product deals with repetitive tasks, it’s hard to keep users excited about it. That’s where UI comes into play. Let’s talk about elements that make an interface more emotional…

How to simplify your design

Companies are in constant pursuit of building simple and usable products. More features, new technologies, and advanced capabilities but still in a lightweight and simple to use format. More often than not, making it simple is the hardest thing there can be…

10 cheat codes for designing User Interfaces

Design can’t be simply explained by colors, shapes, and text. It is a process that has a “Why” behind it, that whenever we create a text bigger, add a shadow, or change the color, there has to be a reason of why things have to be…

 

And finally, let’s turn to resources that give you some immediate practical help with your mock up designs and layouts, from ready to use UI kits down to individual assets, shall we?

60+ great UI kits for iOS engineers

Sometimes we have to release products when we don’t have a nice design in place. We need to ship fast but keep good UX inside our iOS apps… Using prepared UI kits is done exactly for those moments!

UX Design Patterns for Mobile Apps: Which and Why

Mobile Patterns – UI UX Inspirational Gallery for iOS and Android

Mobile Design Patterns – Pttrns

Mobbin – Latest Mobile Design Patterns

User flow design inspiration

All in One Bookmark Links for Designer

 

Any more design resources to add, Dear Reader? Or any experiences with these tools — especially Adobe XD — to share? Let us know!

The Niantic Beyond Reality Developer Contest

Got a great AR game idea burning a hole in your head and all you need is the infrastructure behind Pokémon Go? Well, not only is that available…

Niantic’s Real World Platform combines a world-scale persistent state engine, multiplayer AR, high-speed networking, geolocation data, and much more to create unique experiences that promote a sense of imagination and adventure…

… there’s a competition on to get paid to do a prototype with it!

The Niantic Beyond Reality Developer Contest

We invite you to reach beyond reality and apply for the Niantic Beyond Reality Developer Contest. Explore and create an impactful geospatial AR play experience with the Niantic Real World Platform, and compete for your share of a prize pool of more than one million USD.

For more details on the contest, please check out our blog and please see the Niantic Beyond Reality Developer Contest Official Rules…

Let’s check those more details out, shall we?

Niantic’s Real World Platform combines a world-scale persistent state engine, multiplayer AR, high-speed networking, geolocation data, and much more to create unique experiences that promote a sense of imagination and adventure. We’re seeking applicants that are excited about creating projects that follow core tenets of Niantic: exploration, exercise and real-world social interaction. The required team composition is at least five developers with experience in Unity and Java Server development.

Our focus is on games, but our definition of games is pretty expansive. So if you have an idea that bridges gaming and other areas like physical activity, social, travel or shopping, please feel free to submit. We are looking for proposals that leverage the Niantic Real World Platform’s persistent, real world capability as well as advanced AR. We encourage you to think boldly!

Well, had we the time, we’d have you do AR puzzles Tomb Raider style … inside actual ancient ruins like Angkor Wat. Help yourself, you’re welcome!

A select group of ten teams will earn a stipend and access to the Niantic Real World Platform. Finalists will work for a three-month period, with the goal of showing off their incredible work at a Demo Day in San Francisco, hosted by Niantic. In addition to regular guidance and discussion from the Niantic Engineering team, finalists will be brought to San Francisco/Bay Area to meet with executives and lay the groundwork for the work to come.

We invite you to adventure along with us, and create something that the world has never seen before…

Got some time on your hands and an indie game itch? Looks like the opportunity of the year (at least) there!

Tip: Make Multiple Apple ID 2FA Less F’n A

So, you been getting more than one of these emails recently? Or just one, but you keep your developer Apple ID and your personal Apple ID separate?

You are receiving this email because you have the Account Holder role in a developer program, with full access to tools, resources, and benefits included with your membership. In an effort to keep accounts more secure, two-factor authentication will be required to sign in to your Apple Developer account and Certificates, Identifiers & Profiles starting February 27, 2019. This extra layer of security for your Apple ID helps ensure that you’re the only person who can access your account.

Wee-eee-lllll, as so far Apple devices are not multiuser, that’s a bit of a conundrum isn’t it now?

  • We could have a dedicated device with a phone number for each account, which for the prolific contractor is … impractical.
  • We could log in and out of iCloud accounts every time we want to access developer stuff, which is … even more impractical.
  • Oh, dear. Well, while we wait for Apple to provide a practical alternative, here’s some suggestions

How to activate Apple ID 2fa when you have two accounts

  1. Set up a new user account on your Mac
  2. Login into your iCloud account tied to the developer account under the new macOS user.
  3. Activate two-factor authentication and add your preferred phone number as a backup.
  4. Verify you are able to login into your account via another device or via browser at appleid.apple.com.
  5. Logout of iCloud account on the temp macOS user and switch back to your main macOS user.
  6. Delete the temp account and now, you should be able to use the 2fa via the phone validation every time.

This next piece takes it a step further to full 2FA — did you know your devices can, in fact, be logged into multiple iCloud accounts? We never thought to try that:

Apple Two-Factor Authentication for a Secondary Apple ID

As it turns out, you can be logged in to multiple iCloud accounts on the same device or account. Certain services, such as iCloud storage, or the Photo Library, will only work with the primary iCloud account, but other services, including 2FA, will work for all iCloud accounts.

On your iOS device go to Settings > Passwords & Accounts > Add Account, and choose to add another iCloud account. You probably want to turn off all services, like Mail, Calendar, etc. secondary account.

On the Mac you can do the same in System Preferences > Internet Accounts. You can use both your Mac and iOS devices for 2FA.

Now the secondary Apple ID will prompt the devices you are logged in as for 2FA.

So there you go, Dear Multiple Apple ID Using Readers — good luck in next week’s 2FPocalypse!

UPDATE:

Tips, tricks, and horror stories: Developer Apple ID’s to Require Two-Factor Authentication

Apple’s 2FA announcement will break all Your iOS CI/CD Pipelines. How to Prepare For It

Keep using Fastlane with Apple’s 2FA changes

2019 iOS Conference Calendar

Some interesting news on the conference front this year: First off, the well-regarded RWDevCon is skipping this year, and not returning in its current form either:

RWDevCon: Taking a Break!

Therefore, RWDevCon (focused on iOS) didn’t reflect the range of technologies we cover at raywenderlich.com. Although the conference was a huge success, we needed to take some time and redesign the conference so that it will serve not just our iOS community, but our whole community…

And in what we’re pretty sure is a first in the iOS world, UIKonf didn’t have a Call For Papers this year you noticed? And why would that be?

UIKonf goes all female for 2019 speakers

UIKonf, one of the largest and best-known independent iOS development conferences, has announced that all speakers in its 2019 edition will be female. This isn’t just random chance: the team have announced it’s their way “of raising awareness for the diversity problem while at the same time a celebration of all the women who follow their passion, muster up the courage to go on stage, and hold great talks despite the headwind they’re facing in our industry.”

So if you’re a female-identifying human, there’s a particular opportunity for you:

if you are a female-identifying human or know great women (cis/trans/non-binary) who should speak at UIKonf, send your proposals and suggestions to Engin (engin@uikonf.com)

[*] We use an inclusive definition of “woman” and “female” and we welcome trans women, genderqueer women, and non-binary people who are significantly female-identified. (Inspired by adacamp.org)

Bold indeed! And as for the rest of the year, here’s our current best guesses at where and when conferences are coming up this year, and links to CFPs where those are open and obvious from a quick glance at the site; we’ll update this as we get more news, and we remember to — otherwise, CocoaConferences and its Twitter are a good resource to watch!

JANUARY: 

FEBRUARY:

MARCH:

APRIL:

MAY:

JUNE:

JULY:

AUGUST:

SEPTEMBER:

OCTOBER:

NOVEMBER:

DECEMBER:

 

Know of any we’ve missed that are even vaguely interesting to an iOS developer? Let us know!

And yes … not next year, but well before the end of this year, we’ll put up the 2020 edition as soon as the very earliest CFP opens!

UPDATES:

Announcing AltConf Satellites 2019

The Top Conferences for Mac and iOS Professionals in 2019

Planning to do some live coding in your talk? Check out Introducing ‘Demo Remote‘ for macOS

How To Be Evil (Or Not): App Store Scams vs. White Hat ASO

Who would’ve thought that How To Be Evil for iPhone programmers would start to shape up into a series? Well, turns out there’s more bad actors than you’d think (well, more than you’d think if you’re as trustingly naīve as we’re widely known to be) pulling scammy stuff on their users. Here is a particularly evil instance:

New scammy iOS app shows Apple may need to tweak its App Store review process

After downloading the app in question, called Heart Rate Measurement on the App Store, 9to5Mac reports that it works by claiming to read your heart rate through your fingertip using the iPhone’s Touch ID feature. What the app is really trying to do, though, is get you to authorize a transaction for $89.99 using Touch ID by “dramatically dimming the screen” to such a degree that you hopefully won’t notice the charge…

Mostevil

 

And this is not actually a one-off, apparently there’s a whole mini-industry of these tricksters:

Scam iOS apps promise fitness, steal money instead

But what if you’re not quite that short-sightedly evil, just want a bit of a leg up? Check out this masterpiece of a Guide To Evil™:

How to Game the App Store

I’ve been pestering Apple for years publicly and privately about the manipulation and outright scams going on in the App Store. Apple has made some progress here and there, but overall Apple’s strictness in some areas and hands off approach in others has disproportionately rewarded bad actors while stifling conscientious developers…

Go over and Read The Whole Thing, but here’s sample #1:

1. Find a keyword that drives a decent amount of organic search traffic. Obvious ones are keywords like “weather”, “calculator”, “solitaire”, etc, but those keywords are so competitive, and the rest of the tactics so powerful, you could get away with 2nd tier keyword targets. Now go to App Store Connect and name your app that exact keyword. “Weather” is already taken, and Apple doesn’t allow duplicate app names, so you’ll need to add a symbol. Let’s go with “Weather ◌”.

Here’s the thing, the App Store search algorithm gives a massive boost for an exact match to what the user searched, and the algorithm ignores symbols, so “Weather ◌” will get a huge search advantage, which will help to drive organic installs of the app…

Oh, one more we’ll excerpt — this one actually got us whilst trying out a scam app, luckily just for a trial subscription we promptly rescinded:

4. Trigger the subscription randomly while the app is running. This one is included in the above list, but is so cunning it’s worth a specific mention. Because the iPhone home button serves as a sort of universal back button, a panicking iPhone user is likely to hit the home button when trying to get out of something. Unfortunately, on iPhones with Touch ID, the home button is also how you confirm a purchase. So if the payment view is randomly triggered, many users will accidentally confirm the purchase while trying to exit.

Indeed they will. However, now we have a shiny new XS, so that at least isn’t going to happen again!

One money maker that’s called out is selling user location data, which apparently is a much bigger thing than we’d thought — check this out:

Report: Location Data Monetization in iOS Apps 

But all of us here are white hats, right, and we want to promote our app and earn money legitimately, right? Here’s a list of recentish (if “the last year or so” still counts as “recentish”) ASO resources and marketing tips worth reading to make a living without stooping to Evil™ tactics:

How I doubled App Store Impressions

Earlier this year I went through the App Store Optimization (ASO) process for one of my personal apps. App store impressions doubled immediately. Profits for the app almost doubled as well…

Surviving the App Store

A book on lessons learned in building mobile apps. Written by the indie game dev who built the number one app, A Dark Room…

How to Leverage Apple Pre-order for Your Ios App Launch

Not only does it allow you to get a good amount of pre-orders (and therefore downloads on the first day), it also gives you the possibility to start working on your app metadata for your App Store Optimization efforts…

The Smart Aso Trick for Higher Rankings

It’s no secret that titles – and now also subtitles – are the most important factors for keywords in iOS11. Here’s a smart and simple trick that you can use to leverage the fact that these keywords are given more weight than those included in the standard keywords field…

How to Combine SEO & ASO Techniques to Supercharge Your Keyword Research

There are a handful of excellent articles on Keyword Research for ASO (App Store Optimization), but I haven’t read any so far that combined: 
classical SEO + competitor based keyword research + ASO. So I decided to write one…

ASO in iOS 11: A Detailed Analysis of What REALLY Works

I have analyzed the ASO strategies of over 20 apps to provide you with a truly data-driven look at the impact of iOS 11 on keywords and conversion optimization…

Find the Best App Store Optimization Tools – ASO Tools List

iOS Dev Tools — App Store and Sales

What is ASO? The Ultimate App Store Optimization Guide

The 385 Pages ASO Book (2018): Advanced App Store Optimization

Mobile App Marketing Playbook: 36 Tactics to Promote Your Mobile App

Worldwide App Store Optimization

The Secret to a Great ASO Strategy is Optimizing for People

And don’t forget to keep abreast of the latest techniques in that old school  “classical SEO” to complement your ASO efforts — here’s a recent roundup to help you out with that!

The Ultimate Guide to SEO in 2019

Black Friday Deals 2018

So it’s that shopping event of the year again, and let’s round up some deals, shall we? First off, let’s borrow @mjtsai’s list

Black Friday 2018

 

My apps are on sale for Black Friday and Cyber Monday, and here are some other good deals that I found:
C-Command Software (my apps)
1Password
Checkout (code SHOPSMALL2018)
Corduroy Code
Eastgate Systems
Ergonis Software (code BlackFriday18P)
equinux
MacHeist
No Starch Press (code FRIDAY42)
Pragmatic Bookshelf (code turkeysale2018)
Realmac
Softorino
Southtree (code THANKS)
SQLPro Studio
Twelve South
Twocanoes Software
vBulletin (code ANNUAL5018)
See also: Vector, MacRumors, 9To5Mac, iMore, Thrifter.

To which we’ll add, if you need any books or courses, head over to

raywenderlich.com Black Friday Sale: Yearly Subscription for Just $99!

In particular, we’re very seriously considering the Mega Android & Kotlin Bundle – 2018 as it’s starting to look like Kotlin Native is going to be a viable cross platform language soon, don’t you think?

MacSurfer is still the best general Mac/iOS news aggregator around, so keep an eye there over the weekend; AppleInsider has a good roundup too.

And if you’ve got any hot deals for developers we’ve missed, let us know!

 UPDATES:

Paw is the best native API tool and it’s 50% off!

Deals for iOS Developers and Designers

💰💸💰 Black Friday Deals 💰💸💰 on Github

3D Touch Is Dead – Long Live Haptic Touch

So no doubt you noticed all the angst this summer about Apple possibly removing 3D Touch from iPhones, as indeed it did with the iPhone XR, if not catch up with the discussion here:

Possible Removal of 3D Touch With 2018 iPhones

… and once it actually happened, the seven usual stages of grief pretty much got dropped by most people and they headed straight to acceptance:

The iPhone XR shows how unnecessary 3D Touch has always been

Why does Apple’s 3D Touch fail miserably?

Personally, we figure the only problem with 3D Touch was discoverability, and a pretty much perfect fix was laid out here:

How Apple can fix 3D Touch

… Now that we know what the problem is, here is my solution. Like we did with the link texts years ago on the web, we should visually distinguish 3D Touchable buttons. Look at this same screen and see if you can tell which toggles accept 3D Touch … My solution is adding a line on bottom-right of things that can be 3D Touched. Let’s call them Force Decorators (with reference to Force Touch). 3D Touch is missing the most obvious thing to be mainstream. Visual cues. I think this is the answer.

Simple, elegant, and almost certainly correct; if you do support 3D Touch, consider adopting that!

However, given the lack of wrath from the buying public over the XR missing it, and the continuing Haptic Touch additions, seems like a pretty safe bet that we can consider 3D Touch a dead technology going forward … or at the very least should have parallel implementations. Which brings us to a pair of recent articles to recommend:

How to apply iOS 3D Touch to any UIView as a UIGestureRecognizer

….recently I needed to have an UIGestureRecognizer to apply to any UIView that intercepts 3D Touch as you can do with tap, drag, etc, but nothing similar is available in system libraries.
As result of my study about this implementation, I’ve written a UIGestureRecognizer subclass that can fit my needs…

Improve iOS apps user experience using Haptic Feedbacks and Taptic Engine using UIFeedbackGenerator

In my last post I wrote about introducing 3D Touch as common UIGestureRecognizer in any UIView to improve the interaction with your app, now I want to explore the haptic feedback which is giving us a new physical way to give control to the user of what is happening on his iPhone.
Until haptic feedback through taptic engine, play sounds were the only way to provide users a feedback about an action in the app, but sounds are annoying and sometimes creepy.

UIKit is providing us a clean and elegant way for that: a standard and safe interface for haptic feedbacks plug and play implementation, UIFeedbackGenerator…

If you haven’t checked out UIFeedbackGenerator before, here’s a good quick intro:

Creating an Immersive User Experience with Haptic Feedback in iOS

So, before designing your power user gesture interfaces going forward, check out those technology comparisons … and especially the 3D touch design/usability postmortems. Nothing worse than wasting time writing features that nobody actually uses!

UPDATES:

Remember back when we first collected articles on 3D touch, and digital scale apps were a nifty thing? Guess that’s going to go by the wayside as 3D Touch falls off as well. If you do have one of those apps, maybe you want to migrate to Android — check out the state of their art in 5 Best Real Digital Scale Apps for Android!

Haptico – “easy to use haptic feedback generator with pattern-play support” 

Improve iOS apps user experience using Haptic Feedbacks and Taptic Engine using UIFeedbackGenerator