AdAttributionKit Development Testing problem

Hello. I would like to ask for an assistance with testing AdAttributionKit flow that seems not working.

Goal: to close the AdAttributionKit logic flow loop starting from presenting and handling Ad in a publisher app and ending with receiving a postback request on my end point.

Problem: No postback request is received on my configured domain. It looks like AdAttributionKit cannot connect between AppImpression invocation in Publisher App and updating postback from the Advertised App, hence no update postback request are transmitted to my endpoint.

What was done:

  1. Testing device
  • iPhone 13, iOS 18.0.1
  • Production Apple ID
  • AdAttributionKit Developer Mode is enabled
  • iPhone is reset and restarted
  1. Publisher App
  • Test publisher application was created and configured (according to Apple's documentation [https://developer.apple.com/documentation/adattributionkit/configuring-a-publisher-app]) with the following:

    • AdNetworkIdentifiers item was added to app's Info.plist with number of Ad Network IDs. I tried to use in my tests (used below insted of the <MY-NETWORK-ID-PLACEHOLDER> placeholder):
      • Registered SKAdNetwork Ad Network ID that ends with .skadnetwork
      • Not registered Ad Network ID that ends with .adattributionkit
  • JWS Impression was created with the following

    • JWS Header: {"kid" : "<MY-NETWORK-ID-PLACEHOLDER>","alg" : "ES256"}

    • JWS Payload: {"impression-type" : "app-impression","impression-identifier" : "9547875E-C052-44CD-8CB9-193978CC5AB7", "timestamp" : 1729162517373,"publisher-item-identifier" : 0,"source-identifier" : 1111,"ad-network-identifier" : "<MY-NETWORK-ID-PLACEHOLDER>","advertised-item-identifier" : 1125517808}

    • JWS Data: "BASE64(JWS-Header)"."BASE64(JWS-Payload)"."SIGNED("BASE64(JWS-Header).BASE64(JWS-Payload)")"

    • Signing was done with temporary key (created every time the JWS is composed) by the following:

      let signingInput = "\(headerBase64String).\(payloadBase64String)"
      let privateKey = Curve25519.Signing.PrivateKey()
      var encodedSignature = ""
      do {
          let signature = try privateKey.signature(for: Data(signingInput.utf8))
          encodedSignature = base64UrlEncode(signature)
      } catch {
          print("Error signing JWS: \(error.localizedDescription)")
      }
      
  • UIEventAttributionView (with UITapGestureRecognizer) was added to my ViewController's main view and in a handling method of TAP event, AppImpression was created baased on JWS above and handleTap() method of this AppImpression instance was called.

  • AppImpression was tapped and AppStore has been launched (because to this moment no advertised app with <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER> was installed on a device):

attributionkitd	Preflighting impression
AAKPubApp	Connection established
attributionkitd	Validated impression for advertised app: <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER>
attributionkitd	No distributor bundle ID received from app fetch
attributionkitd	Distributor metadata cached for item ID <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER>
attributionkitd	Is anything happening?
attributionkitd	Processing tap
attributionkitd	Successfully validated publisher application
attributionkitd	Successfully finalized click through impression
attributionkitd	Impression is not eligible for re-engagement
attributionkitd	Launching distributor for itemID: <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER>
attributionkitd	[0x70008b340] activating connection: mach=false listener=false peer=false name=(anonymous)
attributionkitd	Distributor launch completed for item ID: <MY-ADVERTISED-APP-APPSTORE-ID-PLACEHOLDER>
  1. Advertised App
  • Advertised App is an existing application on the AppStore. It was configured according Apple's documentation [https://developer.apple.com/documentation/adattributionkit/configuring-an-advertised-app].

  • AttributionCopyEndpoint key with my domain ("https://<MY_DOMAIN_PLACEHOLDER>.com") was added to app's Info.plist

  • EligibleForAdAttributionKitReengagementPostbackCopies key with "YES" value was added to Info.plist as well.

  • Number of postback method calls were added to the application in different places including application:didFinishLaunchingWithOptions.

  • Used AdAttributionKit method - (updateConversionValue(_:coarseConversionValue:lockPostback:)) [https://developer.apple.com/documentation/adattributionkit/postback/updateconversionvalue(_:coarseconversionvalue:lockpostback:)]

  • Application is written in Objective-C while using AdAttributionKit via Swift-to-ObjC regular bridging.

  • I tried to use Advertised App in the following ways:

    • To run it from Xcode. This way, when the advertised app is already installed, AppImpression tap in the publisher App doesn't recognize the Advertised App is installed and launches AppStore.
    • To install it from TestFlight. This way, AppImpression tap in the publisher App successfully recognizes the Advertised App is installed and launches it.
    • Both ways yield the same result - explanation below.
  • Advertised App launched - while calling update postback method in application:didFinishLaunchingWithOptions

attributionkitd	Updating postback
attributionkitd	Queueing update postback
attributionkitd	[TXNf0dc] 🐏 Beginning transaction (Task runner: atomic)
attributionkitd	Begin update postback
<MY-APPLICATION-NAME-PLACEHOLDER>	Connection established
attributionkitd	[TXN5421] 🐏 Ending transaction (<private>) (<private>)
attributionkitd	Retrieved conversion window thresholds: <private>
attributionkitd	[TXNf0dc] 🐏 Ending transaction (<private>) (<private>)
...
attributionkitd	Calling launch handler for com.apple.attributionkitd.development-postback-transmission
attributionkitd	Begin task for identifier: com.apple.attributionkitd.development-postback-transmission
attributionkitd	Running barktivity: com.apple.attributionkitd.development-postback-transmission
attributionkitd	[TXN46f0] 🐏 Beginning transaction (<private>)
attributionkitd	Found 0 postbacks eligible for transmission for environments: <private>
attributionkitd	Postback transmission completed
attributionkitd	[TXN46f0] 🐏 Ending transaction (<private>) (<private>)
attributionkitd	Marking task <BGRepeatingSystemTask: com.apple.attributionkitd.development-postback-transmission> complete
attributionkitd	Task completed for identifier: com.apple.attributionkitd.development-postback-transmission

The problem I can see here is in the following line:

attributionkitd Found 0 postbacks eligible for transmission for environments: <private>

It looks like AdAttributionKit cannot connect between AppImpression invocation in Publisher App and updating postback from the Advertised App.

Please correct me in case I'm doing anything wrong or missing anything.

Thank you very much.

I've tried the same setup on iPhone XS, iOS 17.7 with a downloaded AddAttributionKit profile as stated here: [https://developer.apple.com/documentation/adattributionkit/testing-ad-attributions-with-a-downloaded-profile] with the same result.

AdAttributionKit Development Testing problem
 
 
Q