ネットワーク要求のコールバックの実装

特定の URL を変更または無視するコールバックでは、次のようにプロトコルを実装します。コールバックメソッド networkRequestCallback は同期されているため、関数からすばやく戻ることをお勧めします。

- (BOOL)networkRequestCallback:(ADEumHTTPRequestTracker *)networkRequest

URL の変換

通常 、networkRequestCallback メソッドは次の手順に従って URL を変換する必要があります。

  1. 正規表現やパターンマッチングなどの手法を使用して、特定の URL を識別します。
  2. ADEumHTTPRequestTracker オブジェクトの url プロパティを変更します。ADEumHTTPRequestTracker オブジェクトのその他のプロパティに対する変更は無視されます。
  3. url プロパティに有効な URL を割り当てます。
  4. リクエストヘッダーとレスポンスヘッダーが必要な場合は、次のフィールドを使用します。
    • allHeaderFields:レスポンスヘッダーを返します。

    • allRequestHeaderFields:リクエストヘッダーを返します。

  5. YES (Objective-C)または true (Swift)を返します。

すべてのネットワークリクエストの URL を変換することもできるので、最初の手順はオプションです。

Objective-C
- (BOOL)networkRequestCallback:(ADEumHTTPRequestTracker *)networkRequest
{
    NSString *maskURL = @"http://networkrequest-mask.com";
    NSURL *url = [NSURL URLWithString:maskURL];
    networkRequest.url = url;
    return YES;
} 
Swift
func networkRequestCallback(_ networkRequest: ADEumHTTPRequestTracker?) -> Bool {
    let maskURL = "http://networkrequest-mask.com"
    let url = URL(string: maskURL)
    networkRequest?.url = url
    return true
}
ただし、一般的には次の例に示すように、機密情報が含まれている URL を特定して変換する必要があります。
Objective-C
- (BOOL)networkRequestCallback:(ADEumHTTPRequestTracker *)networkRequest
{
    NSString *urlString = networkRequest.url.absoluteString;
    BOOL returnBeacon = YES;
    NSString *maskURL = @"http://customer-account.com";
    if (!([urlString rangeOfString:@"accountInfo"].location == NSNotFound)) {
        networkRequest.url = [NSURL URLWithString:maskURL];
    }
    return returnBeacon;
}
Swift
func networkRequestCallback(_ networkRequest: ADEumHTTPRequestTracker?) -> Bool {
    let urlString = networkRequest?.url.absoluteString
    returnBeacon = true
    let maskURL = "http://customer-account.com"
    if !(Int((urlString as NSString?)?.range(of: "accountInfo").location ?? 0) == NSNotFound) {
        networkRequest?.url = URL(string: maskURL)
    }
    return returnBeacon
}

URL の無視

networkRequestCallback メソッドが false を返した場合、ビーコンはドロップされます。ビーコンを無視する一般的なプロセスは次のとおりです。

  1. 正規表現やパターンマッチングなどの手法を使用して、特定の URL を識別します。

  2. false を返します。

コールバック networkRequestCallback が常に NO(Objective-C)または false(Swift)を返すようにすれば、理論的にはすべてのネットワークリクエストを無視できます。

Objective-C
- (BOOL)networkRequestCallback:(ADEumHTTPRequestTracker *)networkRequest
{
    return NO;
}
Swift
func networkRequestCallback(_ networkRequest: ADEumHTTPRequestTracker?) -> Bool {
    return false
}
ただし、一般的には次の例に示すように、モニターしないネットワークリクエストを識別し、NO(Objective-C)または false(Swift)を返して、ネットワークリクエストを無視します。
Objective-C
- (BOOL)networkRequestCallback:(ADEumHTTPRequestTracker *)networkRequest
{
    NSString *urlString = networkRequest.url.absoluteString;
    BOOL returnBeacon = YES;
    if (!([urlString rangeOfString:@"avatar"].location == NSNotFound)) {
        returnBeacon = NO;
    }
    return returnBeacon;
}
Swift
func networkRequestCallback(_ networkRequest: ADEumHTTPRequestTracker?) -> Bool {
    let urlString = networkRequest?.url.absoluteString
    var returnBeacon = true
    if !(Int((urlString as NSString?)?.range(of: "avatar").location ?? 0) == NSNotFound) {
        returnBeacon = false
    }
    return returnBeacon
}