The Trouble with Using iOS Device Tokens

Overview

Device tokens are a legacy device identifier type for addressing Apple iOS installed apps used to target Push Notification delivery.  With the release of iOS 7, device tokens no longer are static and never changing once assigned, but now can change without warning; causing device tokens to be an unreliable method for addressing iOS devices.

Urban Airship introduced Channel ID's in 2013 with the rerelease of iOS 7 as a more reliable and robust method for addressing mobile app installations.  Channel ID's are Urban Airship's currently supported method for addressing devices.  

Known Issues when using Device Tokens

The main problem with device tokens is that they can change and become an unreliable method for addressing notification delivery causing issues with:

  • missing notifications
  • incorrect delivery
  • duplicate notifications 

When encountering these known issues in the wild, Urban Airship is often unable to escalate issues reporting delivery problems when using device tokens, nor are we able to spend significant time troubleshooting issues with delivery.

Solving the problem

There are no available technical solutions to making device tokens a reliable method for targeting devices besides switching to using Channel ID's.  

The Urban Airship SDK makes this easy, automatically handling ID creation and automatically updating the Channel ID any time the underlying device token information changes.

Urban Airship is able to deeply troubleshoot issues based on Channel ID's.

To become familiar with implementing our SDK, we recommend first starting with our Sample App (Swift, Objective-C) and Flight Plans setup walkthrough documentation.  This short exercise demonstrates our best practice based approach to app implementation and will show you working design patterns that should be implemented in your production app.

Further Reading and Related Content

Urban Airship Channels Documentation
Flight Plan: Guided Implementation Walkthrough 

Sample Apps: 
Swift Sample App - https://github.com/urbanairship/ios-library/tree/master/SwiftSample 
Objective-C Sample App - https://github.com/urbanairship/ios-library/tree/master/Sample 
Android Sample App - https://github.com/urbanairship/android-library/tree/master/sample