Сбой приложения при доступе к микрофону в iOS 12.1.2 для iPhone XS

Использование встроенных веб-рабочих может позволить запускать безопасные функции. Что-то вроде этого позволяет пользователю вводить javascript, запускать его и получать результат без доступа к вашему глобальному контексту.

globalVariable = "I'm global";

document.getElementById('submit').onclick = function() {
  createWorker();
}


function createWorker() {
  // The text in the textarea is the function you want to run
  var fnText = document.getElementById('fnText').value;

  // You wrap the function to add a postMessage 
  // with the function result
  var workerTemplate = "\
function userDefined(){" + fnText +
    "}\
postMessage(userDefined());\
onmessage = function(e){console.log(e);\
}"

  // web workers are normally js files, but using blobs
  // you can create them with strings.
  var blob = new Blob([workerTemplate], {
    type: "text/javascript"
  });

  var wk = new Worker(window.URL.createObjectURL(blob));
  wk.onmessage = function(e) {
    // you listen for the return. 
    console.log('Function result:', e.data);
  }

}
Enter a javascript function and click submit

Вы можете попробовать их, например, вставив их в текстовое поле:

return "I'm a safe function";

Вы можете видеть, что это безопасно:

return globalVariable;

У вас даже могут быть более сложные скрипты, например:

var a = 4, b = 5;
function insideFn(){
    // here c is global, but only in the worker context
    c = a + b;
}
insideFn();
return c;

См. Информацию о веб-мастерах здесь, особенно встроенных веб-работников: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers#Embedded_workers

0
задан halfer 5 March 2019 в 21:22
поделиться

1 ответ

Мы попытались найти это свойство для AVCaptureDevice. Однако, не в состоянии найти то же самое.

Решение:

Свойство SupportedColorSpaces действительно существует в AVCaptureDevice.ActiveFormat, убедитесь, что вы получите правильный экземпляр AVCaptureDevice:

[1110 ] Чтобы использовать это, например:

 var videoDevs = AVCaptureDevice.DevicesWithMediaType(AVMediaType.Video);
 var device = videoDevs[0];
 NSNumber[] arr = device.ActiveFormat.SupportedColorSpaces;

Документ здесь:

AVCaptureDeviceFormat

AVFoundation.AVCaptureDevice [ 1113]

SupportedColorSpaces

0
ответ дан Jack Hua - MSFT 5 March 2019 в 21:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: