Как запустить плагины Cordova в фоновом режиме?

Я делаю заявление, основанное на PhoneGap (Cordova). Я проверял это несколько раз, и недавно я увидел сообщение в xcode, в котором говорилось: "Плагин должен использовать фоновый поток". Так можно ли запускать плагины Cordova в фоновом режиме приложения? если да, расскажите пожалуйста как. Спасибо!

2 ответа

Решение

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

Пример фоновой нити на iOS

- (void)myPluginMethod:(CDVInvokedUrlCommand*)command
    {
        // Check command.arguments here.
        [self.commandDelegate runInBackground:^{
            NSString* payload = nil;
            // Some blocking logic...
            CDVPluginResult* pluginResult = [CDVPluginResult resultWithStatus:CDVCommandStatus_OK messageAsString:payload];
            // The sendPluginResult method is thread-safe.
            [self.commandDelegate sendPluginResult:pluginResult callbackId:command.callbackId];
        }];
    }

Пример фоновой темы на андроид

@Override
    public boolean execute(String action, JSONArray args, final CallbackContext callbackContext) throws JSONException {
        if ("beep".equals(action)) {
            final long duration = args.getLong(0);
            cordova.getThreadPool().execute(new Runnable() {
                public void run() {
                    ...
                    callbackContext.success(); // Thread-safe.
                }
            });
            return true;
        }
        return false;
    }

Для запуска в Cordova Swift вам нужно добавить это:

          commandDelegate.run(inBackground: { [self] in
        callingMethod()
    })
Другие вопросы по тегам