2016-10-20 13 views
3

ここに私が使用しているコードがあります。 AppleからattributionDetailsをテストするにはどうすればよいですか?検索広告のアトリビューションAPIコードが正しく機能していることを確認できますか?アップルは、開発者がテストのためにいくつかのテストダミー変換を行う方法について、詳細はほとんどない(https://searchads.apple.com/help/measure-results/#attribution-api)。Appleの新しい検索広告アトリビューション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. 
      } 
     }]; 
    } 
} 

答えて

0

デバイス上のいくつかのテストを行うと、私はあなたがこの行することを見つけると思う:私は

if ([[attributionDetails valueForKey:@"iad-attribution"] isEqualToString:@"true"]

if ([[attributionDetails valueForKey:@"iad-attribution"] boolValue]

が...実際にする必要がありますこれが本当にそれをテストする方法の問題に答えるものではないことを認識してください。しかし、実際のデバイス上でコードを実行するだけでは、ダミーのデータをレスポンスとして受け取ることに気付かないかもしれません。それをテストするには2通りの方法があります

+0

実際にはそうではありません... boolValueは、 "true"、 "YES"、 "Y"に対してtrueを返すほどスマートです。この動作のかなり完全なテストは次のとおりです:http://blog.manbolo.com/2013/07/22/nsstring-boolvalue – photogrammer

0

  1. ユニットテスト:ダミーデータを、それをテストして返すようにOCMockを試してみてくださいそのデバイス上でのdocuments

  2. テストのAppleのドキュメント(iOSの9と上記):デバイス上でコードを実行します。 Appleからダミーデータを受け取ることができるはずです。私は、飛行バージョンの開発とテストのダミーデータを見ることができました。

あなたはiOSの8とiOS 7のための古いAPIを使用する必要があります。注:

- determineAppInstallationAttributionWithCompletionHandler:

- lookupAdConversionDetails:

あなたのアプリはAdClientのかどうかを確認することでのiOSの古いバージョンをサポートしている場合上記の方法に応答します。

{ “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”; 
}; 
} 

あなたはinnerDictionaryを取得する必要があります:(公式documentationに記載されているように)あなたのコードが正しくないので、また、attributionDetailsは、キー「Version3.1」と小さな辞書が含まれています先に調べる前にiad-attributionの値です。

関連する問題