Я пытаюсь отправить пользовательскую строку вместе с существующим пользовательским агентом в WKWebView, - Xamarin iOS - PullRequest
0 голосов
/ 01 ноября 2018

Я пытаюсь отправить пользовательскую строку вместе с существующим пользовательским агентом в WKWebView, (Xamarin iOS)

    WKWebView WKWebView_New = new WKWebView(View.Frame, new WKWebViewConfiguration());
    var userAgent = WKWebView_New.EvaluateJavaScriptAsync("navigator.userAgent");
    WKWebView_New.CustomUserAgent =  userAgent + " + " + "MyApp";

    Console.WriteLine("User Agent = " + userAgent);
    Console.WriteLine("User Agent + Custom = " + WKWebView_New.CustomUserAgent);

Я вижу это как пользовательский агент:

User Agent = System.Threading.Tasks.Task1[Foundation.NSObject]

User Agent + Custom = System.Threading.Tasks.Task1[Foundation.NSObject] + MyApp

Но ожидается увидеть, как показано ниже:

Пользовательский агент = Mozilla / 5.0 (iPhone; процессор iPhone OS 11_4_1, как Mac OS X) AppleWebKit / 605.1.15 (KHTML, как Gecko) Mobile / 15G77

Пользовательский агент + Пользовательский = Mozilla / 5.0 (iPhone; CPU iPhone OS 11_4_1 как Mac OS X) AppleWebKit / 605.1.15 (KHTML, как Gecko) Mobile / 15G77 + MyApp

Любая помощь в отношении того же будет полезна.

Спасибо,

1 Ответ

0 голосов
/ 02 ноября 2018

Используйте код ниже:

 public override void ViewDidLoad()
        {
            base.ViewDidLoad();
            // Perform any additional setup after loading the view, typically from a nib.

            WKWebView WKWebView_New = new WKWebView(View.Frame, new WKWebViewConfiguration());

            WKJavascriptEvaluationResult handler = (NSObject result, NSError err) => {
                if (err != null)
                {
                    System.Console.WriteLine(err);
                }
                if (result != null)
                {
                    System.Console.WriteLine(result);
                    var userAgent = result;
                    WKWebView_New.CustomUserAgent = userAgent + " + " + "MyApp";

                    Console.WriteLine("User Agent + Custom = " + WKWebView_New.CustomUserAgent);
                }
            };

            WKWebView_New.EvaluateJavaScript("navigator.userAgent", handler);

        }

И тогда вы можете получить информацию, которую вы ожидали:

User Agent + Custom = Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16A366 + MyApp
...