Как протестировать новый API от Apple для поиска рекламных объявлений?
Вот код, который я использую. Как я могу проверить attributionDetails
от Apple, чтобы я мог убедиться, что мой код API поиска рекламных объявлений работает правильно? Apple почти ничего не сообщает ( https://searchads.apple.com/help/measure-results/) о том, как разработчики могут сделать некоторые фиктивные преобразования для тестирования.
+ (void)conversionTracking
{
if ([[ADClient sharedClient] respondsToSelector:@selector(requestAttributionDetailsWithBlock:)])
{
// iOS 10 call exists
[[ADClient sharedClient] requestAttributionDetailsWithBlock:^(NSDictionary *attributionDetails, NSError *error) {
if (error) {
NSLog(@"Request Search Ads attributes failed with error: %@", error.description);
if (error.code == ADClientErrorLimitAdTracking) {
NSLog(@"Limit Ad Tracking is enabled for this device.");
}
}
else {
NSLog(@"Search Ads attributes: %@", attributionDetails);
// Found details, track the purchase.
NSString *searchAdsCampaign = @"";
// Check value for "iad-attribution":
if ([attributionDetails valueForKey:@"iad-attribution"] != nil) {
// Check value:
if ([[attributionDetails valueForKey:@"iad-attribution"] boolValue]) {
// Get campaign name:
if ([attributionDetails valueForKey:@"iad-campaign-name"] != nil) {
NSString *campaignName = [attributionDetails valueForKey:@"iad-campaign-name"];
// Exclude Apple test data, where value is "CampaignName":
if ([campaignName isEqualToString:@"CampaignName"]) {
searchAdsCampaign = @"No Campaign";
}
else {
searchAdsCampaign = campaignName;
}
}
else {
// Key not found:
searchAdsCampaign = @"Error";
}
}
else {
// Value "false":
searchAdsCampaign = @"No Campaign";
}
}
else {
// Key not found:
searchAdsCampaign = @"Error";
}
// TRACK IT HERE. Pass up searchAdsCampaign for tracking to my server.
}
}];
}
}
2 ответа
Есть 2 способа проверить это:
Модульное тестирование: попробуйте OCMock, чтобы протестировать его и вернуть фиктивные данные, которые Apple документирует в своих документах.
Тест на устройствах (iOS 9 и выше): запустите свой код на устройствах. Вы должны быть в состоянии получить фиктивные данные от Apple. Я мог видеть фиктивные данные о версиях разработки и тестовых полетов.
Обратите внимание, что вам может потребоваться использовать более старые API для iOS 8 и iOS 7:
- defineAppInstallationAttributionWithCompletionHandler:
если ваше приложение поддерживает более старые версии iOS, проверив, отвечает ли ADClient указанным выше методам. Кроме того, attributionDetails содержит меньший словарь с ключом "Version3.1", поэтому ваш код неверен (как указано в официальной документации):
{ “Version3.1” = { “iad-attribution” = true; “iad-org-name” = “Light Right”; “iad-campaign-id” = 15292426; “iad-campaign-name” = “Light Bright Launch”; “iad-conversion-date” = “2016-06-14T17:18:07Z”; “iad-click-date” = “2016-06-14T17:17:00Z”; “iad-adgroup-id” = 15307675; “iad-adgroup-name” = “LightRight Launch Group”; “iad-keyword” = “light right”; }; }
Прежде чем искать значение атрибута iad, вам нужно сначала получить innerDictionary.
Проведите некоторое тестирование на устройстве, и я думаю, вы обнаружите, что эта строка:
if ([[attributionDetails valueForKey:@"iad-attribution"] boolValue]
... на самом деле должно быть:
if ([[attributionDetails valueForKey:@"iad-attribution"] isEqualToString:@"true"]
Я понимаю, что это на самом деле не отвечает на вопрос, как это проверить. Но, возможно, вы не знаете, что если вы просто запустите свой код на реальном устройстве, вы получите в качестве ответа некоторые фиктивные данные.