как сделать рекламный блок для UIWebview? - PullRequest
0 голосов
/ 10 августа 2010

Хотя в яблоке запретили флеш, который отключил много рекламы. Мне все еще нравится функциональность, похожая на рекламный блок для браузера.

Я заметил, что adblock делает это, проверяя URL всех запросов на загрузку. Это возможно с UIWebview?

Любые предложения хорошо приходят Спасибо

1 Ответ

1 голос
/ 10 августа 2010

Нет.

Однако вы можете swizzle -[NSURLRequest initWithURL:cachePolicy:timeoutInterval:], чтобы предотвратить отправку запроса с самого начала, например:

static id (*oldMethod)(id self, SEL _cmd, NSURL* theURL, ....);

static id newMethod(id self, SEL _cmd, NSURL* theURL, ....) {
    if ([[theURL absoluteString] hasPrefix:@"http://example.com"]) {
        [self release];
        return nil;
    }
    return oldMethod(self, _cmd, theURL, cachePolicy, timeoutInterval);
}

....


Method m = class_getInstanceMethod([NSURLRequest class], 
                                  @selector(initWithURL:cachePolicy:timeoutInterval:));
oldMethod = method_setImplementation(m, newMethod);

Обратите внимание, что возврат nil вообще не безопасно.Возможно, что запрос будет сохранен в некоторой структуре данных, и программа потерпит крах.

...