SKAdnetwork is the new way of attribution introduced by Apple for iOS 14. Here is the official documentation provided by Apple. When using SKAdnetwork, a signature is attached to each ad click. When the user opens your app for the first time, Apple will be able to verify if they're coming from a specific ad with this signature. Then, a postback is sent back to the ad network to attribute a new install. In order to integrate with SKAdnetworks, you'll have to call both of these two methods below in SDK. We already update both iOS and Unity SDK to support those two methods.
registerAppForAdNetworkAttribution(): This method should be called at first launch and register the user for attribution. If the user is from a signed ad, a postback will be fired in the following hours, notifying the ad network of this app install.
updateConversionValue(_:): This method should be called every time you want to update the conversion value attached to this specific user. You can call this method as many times as you want, but the conversion value will only be updated if it is higher than the previous one.
Also, please ask ad-networks if they are ready to run SKAdnetwork campaigns.
Conversion value is a numeric value between 0 and 63 which you can assign to a specific install. It's a "signal" that will help you understand how valuable this specific user is, without giving you a way to identify them. Ad networks can use this information to understand how valuable each install is for your business. This signal can help ad networks identify better audiences to serve your ads and improve your campaigns' performances. Here are the important characteristics you need to remember for conversion values.
- You can only update the conversion value with a higher value than your previous call (1-> 2 but not 3->2)
- A limited value between 0-63
- You can measure conversion values for whatever time frame within the user's life time, but the longer you wait, the later ad-networks will get the postback from Apple. In Tenjin, we recommend to use 24 hours time window for this reason.
- The conversion value only appears if there are enough installs from the publisher according to Apple’s privacy thresholds.
In Tenjin, we give developers the full flexibility to choose whatever conversion values you can map to the specific user's event. Tenjin customer success to team is happy to work with your team to figure out what will be the best implementation for your app, but here are a couple of basic recommendations for apps that are mainly monetized through in-app ads.
1. Map ad revenue to conversion values
- Figure out the conversion value buckets for each accumulated ad revenue calculated on the device for 24 hours since the install using historical data.
- Implement the conversion value buckets in the SDK: map accumulated ad revenue to conversion values.
Send the corresponding conversion value using
updateConversionValue(_:)method in Tenjin SDK when the ad impression happens every time to Tenjin (and Apple) until the 24 hours of install.
Note: The mapping of ad revenue to conversion values may change over time and require updates in the app. You also need to integrate Impression Level Revenue Data(ILRD) in mediation SDK (at this point only MoPub and ironSource have this feature right now).
2. Map ad impressions to conversion values
- Figure out the conversion value buckets for each accumulated ad impressions calculated on the device for 24 hours since the install using historical data.
- Implement the conversion value buckets in the SDK: map accumulated ad impressions to conversion values.
Send the conversion value (impression counts) using
updateConversionValue(_:)method in Tenjin SDK every time the impression happens to Tenjin (and Apple) until the first 24 hours of install.
Note: The mapping of ad impressions to conversion values may change over time and require updates in the app.
- Count the sessions as they are accumulated over a 24 hour period since the install.
- Send the CV (accumulated session count) using
updateConversionValue(_:)method in Tenjin SDK to Tenjin (and Apple) every time the session occurs until the first 24 hours of install.
Also here are other examples of conversion value implementation shared by other customers.
In the postback sent from Apple to ad-network, there are two different types of timers:
- 24 hours timer: can be reset multiple times and has a defined duration of 24 hours
- Random timer: once it starts, it can't reset. The duration is random, between 0-24hours
When you fire
registerAppForAdNetworkAttribution(), the 24 hours timer starts. If you decide to fire
updateConversionValue(_:), the 24 hours timer is reset to zero and starts again.
Every time you fire
updateConversionValue(_:), 24 hours timer will reset.
Suppose you don't fire
updateConversionValue(_:) before 24 hours timer expires, a random timer will start. Once the random timer starts, you can't update the conversion value anymore.
At the end of the random timer, the postback is sent to the ad network. This postback can include (or not) a conversion value (it will be the latest value you set for this specific user)
Feel free to email to firstname.lastname@example.org if you have any specific questions.