Created
November 2, 2020 13:10
-
-
Save oded-regev/b0d17a8934797a23d01ecb9c5feccf83 to your computer and use it in GitHub Desktop.
iOS14 example on how to use loadProduct() with SKAdNetwork signature support
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-(void) openAppInstallRec:(OBRecommendation * _Nonnull)rec inNavController:(UINavigationController * _Nonnull)navController { | |
if (@available(iOS 11.3, *)) { | |
SKStoreProductViewController *storeViewController = [[SKStoreProductViewController alloc] init]; | |
NSDictionary *productParameters = [self prepareLoadProductParams:rec]; | |
NSLog(@"loadProductWithParameters: %@", productParameters); | |
[storeViewController loadProductWithParameters:productParameters completionBlock:^(BOOL result, NSError * _Nullable error) { | |
// result - true if the product information was successfully loaded, otherwise false. | |
NSLog(@"loadProductWithParameters - result: %@, error: %@", result ? @"true" : @"false", [error localizedDescription]); | |
}]; | |
[navController presentViewController:storeViewController animated:YES completion:nil]; | |
} | |
} | |
-(NSDictionary *) prepareLoadProductParams:(OBRecommendation * _Nonnull)rec { | |
NSMutableDictionary* productParameters = [[NSMutableDictionary alloc] init]; | |
if (@available(iOS 11.3, *)) { | |
[productParameters setObject: rec.skAdNetworkData.iTunesItemId forKey: SKStoreProductParameterITunesItemIdentifier]; | |
[productParameters setObject: rec.skAdNetworkData.adNetworkId forKey: SKStoreProductParameterAdNetworkIdentifier]; | |
[productParameters setObject: rec.skAdNetworkData.signature forKey: SKStoreProductParameterAdNetworkAttributionSignature]; | |
[productParameters setObject:[[NSUUID alloc] initWithUUIDString:rec.skAdNetworkData.nonce] forKey:SKStoreProductParameterAdNetworkNonce]; | |
// timestamp and campaignId must be valid | |
if (rec.skAdNetworkData.timestamp > 0 && [rec.skAdNetworkData.campaignId isKindOfClass: [NSNumber class]]) { | |
[productParameters setObject: @(rec.skAdNetworkData.timestamp) forKey: SKStoreProductParameterAdNetworkTimestamp]; | |
[productParameters setObject: @([rec.skAdNetworkData.campaignId intValue]) forKey: SKStoreProductParameterAdNetworkCampaignIdentifier]; | |
} | |
if (@available(iOS 14, *)) { | |
// These product params are only included in SKAdNetwork version 2.0 | |
if ([rec.skAdNetworkData.skNetworkVersion isEqualToString:@"2.0"]) { | |
[productParameters setObject: @"2.0" forKey: SKStoreProductParameterAdNetworkVersion]; | |
[productParameters setObject: rec.skAdNetworkData.sourceAppId forKey: SKStoreProductParameterAdNetworkSourceAppStoreIdentifier]; | |
} | |
} | |
} else { | |
return nil; | |
} | |
return productParameters; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment