ios - 如何测试 Apple 的新搜索广告归因 API?

标签 ios cocoa-touch apple-search-ads

这是我正在使用的代码。如何测试 Apple 的 attributionDetails 以确保我的 Search Ads Attribution API 代码正常工作? Apple 几乎没有提供有关开发人员如何进行一些测试虚拟转换以进行测试的详细信息 (https://searchads.apple.com/help/measure-results/#attribution-api)。

+ (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.
            }
        }];
    }
}

最佳答案

有两种测试方法:

  1. 单元测试:尝试 OCMock 对其进行测试并返回 Apple 在其 documents 中记录的虚拟数据

  2. 在设备上测试(iOS 9 及更高版本):在设备上运行您的代码。您应该能够从 Apple 接收虚拟数据。我可以看到有关开发和试飞版本的虚拟数据。

请注意,您可能需要为 iOS 8 和 iOS 7 使用较旧的 API:

- determineAppInstallationAttributionWithCompletionHandler:

- lookupAdConversionDetails:

如果您的应用程序支持旧版本的 iOS,请检查 ADClient 是否响应上述方法。此外,attributionDetails 包含一个较小的字典,其键为“Version3.1”,因此您的代码不正确(如官方 documentation 中所述):

{ “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-attribution 值之前,您需要先获取 innerDictionary。

关于ios - 如何测试 Apple 的新搜索广告归因 API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40164379/

相关文章:

ios - 在 App Store 的 itunesconnect 中删除图标光泽(不在应用程序中)

iphone - UIImage上的TapGestureRecgonizer在 Storyboard 设置中不起作用

ios - IOS界面生成器中模块的用途是什么?

ios - Apple Search Ads + Localytics

ios - Spotify 播放列表 ios sdk swift 问题

ios - Cocoa Touch Objective-C Framework 中的 Swift 类

objective-c - 防止在 TableView 中删除第一行

ios - 需要有关应用商店搜索广告的帮助

cordova - 如何在 Ionic/Cordova 中获取搜索广告应用归因 API 信息

ios - Xamarin iOS : A EXC_CRASH, 无法理解日志的内容