Оцените Javascript код в быстром без веб-просмотра - PullRequest
0 голосов
/ 02 мая 2020

поэтому я пишу приложение для радиостанции, которое динамически загружает рекламу. Первоначальное решение было go до https://cdn.azureradio.com/invocation/clearwater/iOS/the_beat.html в WebView, а затем я использовал Swift Soup и создал веб-представление для нужных мне переменных. Однако недавно я обнаружил, что веб-представления не загружают запросы в фоновом режиме, IE: если устройство заблокировано.

Это, очевидно, создает проблему. С учетом сказанного я решил сделать HTTP-запрос. Я позвонил по URL и получил Javascript строку. Мне нужно знать, как запустить код javascript и поместить генерируемый им html в переменную, чтобы я мог найти переменную. В настоящее время я получаю Javascript код

<!-- Azure Spot Server Javascript Tag - Generated with Revive Adserver v5.0.5 -->
<script type='text/javascript'><!--//<![CDATA[
   var m3_u = (location.protocol=='https:'?'https://azureradio.com/ads/www/delivery/ajs.php':'http://azureradio.com/ads/www/delivery/ajs.php');
   var m3_r = Math.floor(Math.random()*99999999999);
   if (!document.MAX_used) document.MAX_used = ',';
   document.write ("<scr"+"ipt type='text/javascript' src='"+m3_u);
   document.write ("?zoneid=7&amp;target=_top");
   document.write ('&amp;cb=' + m3_r);
   if (document.MAX_used != ',') document.write ("&amp;exclude=" + document.MAX_used);
   document.write (document.charset ? '&amp;charset='+document.charset : (document.characterSet ? '&amp;charset='+document.characterSet : ''));
   document.write ("&amp;loc=" + escape(window.location));
   if (document.referrer) document.write ("&amp;referer=" + escape(document.referrer));
   if (document.context) document.write ("&context=" + escape(document.context));
   if (document.mmm_fo) document.write ("&amp;mmm_fo=1");
   document.write ("'><\/scr"+"ipt>");
//]]>--></script>

. Я понятия не имею, как быстро запустить этот код для генерации URL без использования webView.evaluateJavaScript("document.documentElement.outerHTML.toString()") Большое спасибо.

1 Ответ

0 голосов
/ 03 мая 2020

Вы можете использовать JavaScriptCore , который является способом прямого доступа к движку WebKit JavaScript без фактического использования экземпляра веб-представления.

import JavaScriptCore

let context = JSContext()!
let value = context.evaluateScript(yourJavaScriptString)
print(value)

value, который возвращается значение последнего элемента, который был оценен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...