ネットワーク要求のコールバックの実装
特定の URL を変更または無視するコールバックでは、次のようにプロトコルを実装します。コールバックメソッド networkRequestCallback は同期されているため、関数からすばやく戻ることをお勧めします。
- (BOOL)networkRequestCallback:(ADEumHTTPRequestTracker *)networkRequestURL の変換
通常 、networkRequestCallback メソッドは次の手順に従って URL を変換する必要があります。
- 正規表現やパターンマッチングなどの手法を使用して、特定の URL を識別します。
ADEumHTTPRequestTrackerオブジェクトの url プロパティを変更します。ADEumHTTPRequestTrackerオブジェクトのその他のプロパティに対する変更は無視されます。- url プロパティに有効な URL を割り当てます。
- リクエストヘッダーとレスポンスヘッダーが必要な場合は、次のフィールドを使用します。
-
allHeaderFields:レスポンスヘッダーを返します。 -
allRequestHeaderFields:リクエストヘッダーを返します。
-
- 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 }
- 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 を返した場合、ビーコンはドロップされます。ビーコンを無視する一般的なプロセスは次のとおりです。
-
正規表現やパターンマッチングなどの手法を使用して、特定の URL を識別します。
- false を返します。
コールバック networkRequestCallback が常に NO(Objective-C)または false(Swift)を返すようにすれば、理論的にはすべてのネットワークリクエストを無視できます。
- Objective-C
-
- (BOOL)networkRequestCallback:(ADEumHTTPRequestTracker *)networkRequest { return NO; } - Swift
-
func networkRequestCallback(_ networkRequest: ADEumHTTPRequestTracker?) -> Bool { return false }
- 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 }