Leanplum iOS 13 compatibility

With the latest update to iOS 13, Apple introduced changes to push token data, location permissions, and Bluetooth settings. In response, Leanplum has made changes to our SDK and for this to continue to work, you will need to update to the latest version of our SDK. Below are the changes you will see in each area.

Push Token

In iOS 13+, Apple has changed the description method which will change the iOS Push Token data returned in the didRegisterForRemoteNotificationsWithDeviceToken: delegate. The changes in the push token description are detailed below.

Previous Description Method Token

<124686a5 556a72ca d808f572 00c323b9 3eff9285 92445590 3225757d b83997ba>

New Description Method Token

{length = 32, bytes = 0xd3d997af 967d1f43 b405374a 13394d2f ... 28f10282 14af515f }

NOTE: With this change, all remote push in Leanplum iOS SDK 2.5.1 and earlier versions will no longer work, as they relied on the old description method.

This has been fixed in versions of Leanplum iOS SDK 2.6.0+ and Leanplum Unity SDK 2.0.6+.

❗️

Apps built with Xcode 11 and running iOS 13 Affected

The changes above were introduced in Xcode 11 and iOS13. To avoid any issues, make sure to use the latest version of the Leanplum iOS SDK as detailed above

Location Permissions

Additionally in iOS 13+, Apple has changed the way location permissions work. If you use geofences for location-based messaging, you will need to ensure you have Location Background Mode enabled in your Xcode project. No other changes are required to keep your messaging working.

12701270

A few notes regarding the location permissions changes:

Previously, if you requested to get access to the user’s location permission “Always”, the user would see the following dialog to accept this permission:

481481

iOS 13 changes that to initially asking the user to give permission while using the app. Later, when the app tries to access location in the background, the user is given a dialog to enable Always permission.

739739

Periodically, the user is reminded that this app has been using location in the background, and they have the option to disable it.

686686

Bluetooth

This impacts iBeacon based geolocation messaging only.

In iOS 12 and earlier, Bluetooth permission ask was not required to connect to iBeacons. However, in iOS 13, iBeacons connection needs Bluetooth permission.

If you are using beacon-based geolocation messaging, please ensure to request Bluetooth permission so that these messages continue to go out to the users.
Please ensure that you add value for the key NSBluetoothAlwaysUsageDescription in your Info.plist explaining to the user why you need Bluetooth to access the user’s location through beacons.