Как запустить плагины 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()
})