Is an SKAdNetwork ad network identifier case-sensitive?

In order to ensure the correct value for SKStoreProductParameterAdNetworkIdentifier both in the signature and in the Info.plist, does an SKAdNetwork ad network identifier need to be case-sensitive?

For example, the actual ID is
EL4OVQ65T3.skadnetwork but the publisher adds el4ovq65t3.skadnetwork to the Info.plist.

In this case, does Apple do some validation to ensure the submitted signature and the app's SKAdNetwork ID match? Or would the signature fail because these are technically considered two different IDs?

Either the ID is case sensitive or it is not. Can you please update the documentation to be clear about the case sensitivity requirements?

Accepted Answer

Correct, ad-network-id should be lowercase in the info.plist

Answers

  • 1. Would love to get confirmation on this one way or the other.

can you please reply @Apple ????
Building on jcarlson33's question, we've done research into how Apple handles case sensitivity and it appears that Apple does validate case sensitivity for SKAdNetwork IDs, in some cases.

Hypothesis 1: Case sensitivity is required between the SKAdNetwork ID the developer adds to her/his info.plist, the SKAdNetwork ID used when compiling the SKAdNetwork signature, and SKAdNetwork ID used when SDK calls loadProduct(withParameters:completionBlock:) with SKStoreProductParameterAdNetworkIdentifier.

We ran the following experiments to prove such case:
  1. 9G2AGGBJ52 network ID in info.plist, 9g2aggbj52 as SKStoreProductParameterAdNetworkIdentifier for StoreKit controller, and for signature generation;

  2. 9g2aggbj52 network ID in info.plist, 9G2AGGBJ52 as SKStoreProductParameterAdNetworkIdentifier for StoreKit controller, and for signature generation

Conclusion 1: In both cases, the postbacks were not returned by Apple, and we assume Apple has case-sensitive validation. We believe it’s important to use the same value in the info.plist, SKStoreProductParameterAdNetworkIdentifier, and SKAdNetwork signature

Hypothesis 2: Apple does not validate case sensitivity between assigned SKAdNetwork ID and SKAdNetwork ID used in practice, so long as the case sensitivity is consistent across info.plist, SKStoreProductParameterAdNetworkIdentifier when loadProduct(withParameters:completionBlock:) is called, and SKAdNetwork signature.

We ran the following experiments to prove such case:
  • Our assigned SKadnetwork ID is 9G2AGGBJ52.skadnetwork

We ran an experiment and used an all lowercase SKAdNetwork ID, 9g2aggbj52.skadnetwork, in the Info.plist, in SKStoreProductParameterAdNetworkIdentifier for the StoreKit controller, and for signature generation. Apple successfully returned a postback, although SKAdNetwork ID was all lowercase, but the assigned SKAdNetwork ID was all uppercase.

Conclusion 2: You may change the letter capitalization of your assigned SKAdNetwork ID from all lowercase to all uppercase, and vice-versa, so long as the cases used are consistent between info.plist, SKAdnetwork signature and SKStoreProductParameterAdNetworkIdentifier. Theoretically, the ad tech industry could always string SKAdNetwork IDs to lowercase to avoid human errors and provide consistency for developers

Request to Apple: Could you please clarify the case sensitivity requirements in your documentation? Thank you.

Correct, ad-network-id should be lowercase in the info.plist
Thank you for your reply that the ad-network-id should be lowercase in the info.plist.

Some recommendations:
  1. Please add the lowercase requirement to the documentation.

  2. Please consider making the output value from Apple Developer Site after registration lowercase.

  3. Please consider converting any SKAdNetworkIdentifier value pulled on device to lowercase before processing.

These above steps will go a long way towards ensuring that networks and publishers are configured correctly.
Hi Apple, looking to close the loop on the case sensitivity of the SKAdNetwork ID. Would you be able to update your external documentation or address Natalie's post from two months ago?