Electron osx systemPreferences.askForMediaAccess вылетает приложение - PullRequest
0 голосов
/ 08 октября 2019

Приложение Electron аварийно завершает работу после systemPreferences.askForMediaAccess('microphone') выполнения

Вот основные зависимости проекта:

package.json

 "electron": "6.0.11",
 "electron-builder": "21.2.0",
 "electron-reload": "1.5.0",

Локальное окружение

для локального запуска электрона Я использую:

electron .

в основном файле сценария, который у меня есть:

...
win.loadURL(format({
      pathname: join(__dirname, 'dist/index.html'),
      protocol: 'file:',
      slashes: true,
      hash: '/setup/test-code'
    }));
...

// when script below is executed, application is crashed.

ipcMain.on('request-mic', async (event, serviceName) => {
    const isAllowed: boolean = await systemPreferences.askForMediaAccess('microphone');
    event.returnValue = isAllowed;
  });

Сборка дляпроизводство (это работает)

скрипт для сборки:

electron-builder build --mac

Electron-Builder.json

"mac": {
    "icon": "dist",
    "extendInfo": {
      "NSMicrophoneUsageDescription": "text for mic access"
    },
    "target": [
      "dmg"
    ]
  },

Вопрос: Как исправить скрипт, который я запускаюдля местного развития? Отчет о сбое:

Process:               Electron [30035]
Path:                  /Users/USER/*/Electron.app/Contents/MacOS/Electron
Identifier:            com.github.Electron
Version:               6.0.11 (6.0.11)
Code Type:             X86-64 (Native)
Parent Process:        ??? [30034]
Responsible:           Electron [30035]
User ID:               501

Date/Time:             2019-10-08 19:15:09.237 +0300
OS Version:            Mac OS X 10.14.6 (18G95)
Report Version:        12
Bridge OS Version:     3.6 (16P6571)
Anonymous UUID:        B07CBEBB-07F2-C6D0-1B58-F1A8AD362A4F

Sleep/Wake UUID:       F5422300-C6F0-4EC3-BE17-5E7C8539988F

Time Awake Since Boot: 210000 seconds
Time Since Wake:       17000 seconds

System Integrity Protection: enabled

Crashed Thread:        3  Dispatch queue: com.apple.root.default-qos

Exception Type:        EXC_CRASH (SIGABRT)
Exception Codes:       0x0000000000000000, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Termination Reason:    Namespace TCC, Code 0x0

Thread 0:: CrBrowserMain  Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib          0x00007fff629bb22a mach_msg_trap + 10
1   libsystem_kernel.dylib          0x00007fff629bb76c mach_msg + 60
2   com.apple.CoreFoundation        0x00007fff369311ee __CFRunLoopServiceMachPort + 328
3   com.apple.CoreFoundation        0x00007fff3693075c __CFRunLoopRun + 1612
4   com.apple.CoreFoundation        0x00007fff3692febe CFRunLoopRunSpecific + 455
5   com.apple.HIToolbox             0x00007fff35b8f1ab RunCurrentEventLoopInMode + 292
6   com.apple.HIToolbox             0x00007fff35b8eee5 ReceiveNextEventCommon + 603
7   com.apple.HIToolbox             0x00007fff35b8ec76 _BlockUntilNextEventMatchingListInModeWithFilter + 64
8   com.apple.AppKit                0x00007fff33f2779d _DPSNextEvent + 1135
9   com.apple.AppKit                0x00007fff33f2648b -[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 1361
10  com.apple.AppKit                0x00007fff33f205a8 -[NSApplication run] + 699
11  com.github.Electron.framework   0x000000010f150afc 0x10ccf4000 + 38128380
12  com.github.Electron.framework   0x000000010f14f638 0x10ccf4000 + 38123064
13  com.github.Electron.framework   0x000000010f0f2068 0x10ccf4000 + 37740648
14  com.github.Electron.framework   0x000000010f0c3dc7 0x10ccf4000 + 37551559
15  com.github.Electron.framework   0x000000010e55a9db 0x10ccf4000 + 25586139
16  com.github.Electron.framework   0x000000010e55a83d 0x10ccf4000 + 25585725
17  com.github.Electron.framework   0x000000010e55c1c2 0x10ccf4000 + 25592258
18  com.github.Electron.framework   0x000000010e557836 0x10ccf4000 + 25573430
19  com.github.Electron.framework   0x000000010e42c515 0x10ccf4000 + 24347925
20  com.github.Electron.framework   0x000000010e42c101 0x10ccf4000 + 24346881
21  com.github.Electron.framework   0x00000001107bfb90 0x10ccf4000 + 61651856
22  com.github.Electron.framework   0x000000010d6b9594 0x10ccf4000 + 10245524
23  com.github.Electron.framework   0x000000010ccf6994 AtomMain + 84
24  com.github.Electron             0x000000010ccbfa10 0x10ccbe000 + 6672
25  libdyld.dylib                   0x00007fff628863d5 start + 1

Thread 1:
0   libsystem_pthread.dylib         0x00007fff62a793f0 start_wqthread + 0

Thread 2:
0   libsystem_pthread.dylib         0x00007fff62a793f0 start_wqthread + 0

Thread 3 Crashed:: Dispatch queue: com.apple.root.default-qos
0   libsystem_kernel.dylib          0x00007fff629d9016 __abort_with_payload + 10
1   libsystem_kernel.dylib          0x00007fff629d45db abort_with_payload_wrapper_internal + 82
2   libsystem_kernel.dylib          0x00007fff629d460d abort_with_payload + 9
3   com.apple.TCC                   0x00007fff5d1b7091 __CRASHING_DUE_TO_PRIVACY_VIOLATION__ + 163
4   com.apple.TCC                   0x00007fff5d1b6fee __TCCAccessRequest_block_invoke.85 + 629
5   com.apple.TCC                   0x00007fff5d1b505d __tccd_send_message_block_invoke + 231
6   libxpc.dylib                    0x00007fff62abde2f _xpc_connection_reply_callout + 36
7   libxpc.dylib                    0x00007fff62abddb6 _xpc_connection_call_reply_async + 86
8   libdispatch.dylib               0x00007fff628396a7 _dispatch_client_callout3 + 8
9   libdispatch.dylib               0x00007fff6284f977 _dispatch_mach_msg_async_reply_invoke + 311
10  libdispatch.dylib               0x00007fff628480eb _dispatch_kevent_worker_thread + 1366
11  libsystem_pthread.dylib         0x00007fff62a7961b _pthread_wqthread + 431
12  libsystem_pthread.dylib         0x00007fff62a793fd start_wqthread + 13


1 Ответ

0 голосов
/ 11 октября 2019

Хорошо, поэтому я нашел основную причину. Я запускал приложение из терминала веб-шторма. Он работает так же, как и ожидалось, если я запустил его с обычного терминала.

Похоже, в первом случае разрешения были предоставлены веб-шторму вместо приложения электронного помощника

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