Closed warbadev closed 5 years ago
This is really but did you find the problem?
@warbadev I have the same problem, did you find any solutions?
@faldunate @warbadev Were you able to resolve this issue?
I was able to get it firing the first time fine, but subsequent fetch events failed.
Show me your code.
Hi @christocracy, thanks for taking a look. This is my code inside my app.component.ts:
Nothing really out of the ordinary here, I've just followed the structure provided by Ionic. I've also tried w/o using LocalNotifications but the same problem persists.
2018-01-15 19:26:12.356967+0800 MyApp[20208:2449509] CDVBackgroundFetch AppDelegate received fetch event
2018-01-15 19:26:12.357102+0800 MyApp[20208:2449509] [TSBackgroundFetch performFetchWithCompletionHandler]
2018-01-15 19:26:12.357231+0800 MyApp[20208:2449509] - CDVBackgroundFetch Rx Fetch Event
2018-01-15 19:26:12.364096+0800 MyApp[20208:2449509] Background Fetch start
2018-01-15 19:26:12.365401+0800 MyApp[20208:2449509] [TSBackgroundFetch finish]: CDVBackgroundFetch
2018-01-15 19:26:12.365489+0800 MyApp[20208:2449509] [TSBackgroundFetch doFinish] Complete, UIBackgroundFetchResult: 0, responses: 1
2018-01-15 19:26:12.544003+0800 MyApp[20208:2449509] scheduling a notification
2018-01-15 19:56:05.869467+0800 MyApp[20208:2449509] CDVBackgroundFetch AppDelegate received fetch event
2018-01-15 19:56:05.869603+0800 MyApp[20208:2449509] [TSBackgroundFetch performFetchWithCompletionHandler]
2018-01-15 19:56:05.869683+0800 MyApp[20208:2449509] - CDVBackgroundFetch Rx Fetch Event
2018-01-15 19:56:32.747767+0800 MyApp[20208:2449509] CDVBackgroundFetch AppDelegate received fetch event
2018-01-15 19:56:32.747956+0800 MyApp[20208:2449509] [TSBackgroundFetch performFetchWithCompletionHandler]
2018-01-15 19:56:32.748054+0800 MyApp[20208:2449509] Warning: Application delegate received call to -application:performFetchWithCompletionHandler: but the completion handler was never called.
2018-01-15 19:56:32.748167+0800 MyApp[20208:2449509] - CDVBackgroundFetch Rx Fetch Event
constructor(
private platform: Platform, private statusBar: StatusBar, private splashScreen: SplashScreen,
private authService: AuthService, private localNotifications: LocalNotifications,
private afDB: AngularFireDatabase, private backgroundFetch: BackgroundFetch
) {
platform.ready().then(() => {
statusBar.styleDefault();
splashScreen.hide();
let authState = authService.currentAuthObservable;
this.rootPage = 'HomePage';
authState.subscribe((authObj) => {
if (authObj == null){
console.log('User is not authenticated in the App: setting root to Home');
this.rootPage = 'HomePage';
}
else {
console.log('The app is logged in from the app component, root is set to Tabs');
this.uid = authObj.uid;
this.rootPage = 'Tabs';
let refString: string = 'users/' + this.uid;
this.userDataDisposable = this.afDB.object(refString).valueChanges()
.subscribe((userData) => {
this.profile = userData;
});
}
});
const config: BackgroundFetchConfig = {
stopOnTerminate: false, // Set true to cease background-fetch from operating after user "closes" the app. Defaults to true.
};
this.backgroundFetch.configure(config).then(this.fetchCallback);
});
}
fetchCallback = () => {
console.log('Background Fetch start');
if (this.profile) {
const chatKey = this.createChatKey;
console.log('Background Fetch detected patient userType')
this.chatRoomDisposable = this.afDB.object('chats/' + chatKey).query.ref.once('value')
.then((data) => {
let messageObj = data.val();
let lastReadTimeStamp = messageObj[this.uid]['lastRead'];
let timestamp = messageObj['timestamp'];
let sender = messageObj['lastSender'];
let message = messageObj['lastMessage'];
if (sender != this.uid) {
if (lastReadTimeStamp != timestamp) {
this.scheduleNotification(messageObj);
}
}
})
}
this.backgroundFetch.finish();
}
get createChatKey(){
return ''
}
scheduleNotification(messageObj){
console.log('scheduling a notification');
let message = messageObj.lastMessage;
let sender = messageObj.lastSender;
this.localNotifications.schedule({
id: 1,
title: sender,
text: message,
});
}
Package.json:
{
"name": "",
"version": "0.0.0",
"author": "Ionic Framework",
"homepage": "http://ionicframework.com/",
"private": true,
"scripts": {
"clean": "ionic-app-scripts clean",
"build": "ionic-app-scripts build",
"lint": "ionic-app-scripts lint",
"prettier": "prettier --write",
"ionic:build": "ionic-app-scripts build",
"ionic:serve": "ionic-app-scripts serve",
"test": "karma start ./test-config/karma.conf.js",
"test-ci": "karma start ./test-config/karma.conf.js --single-run",
"test-coverage": "karma start ./test-config/karma.conf.js --coverage",
"e2e": "npm run e2e-update && npm run e2e-test",
"e2e-test": "protractor ./test-config/protractor.conf.js",
"e2e-update": "webdriver-manager update --standalone false --gecko false"
},
"dependencies": {
"@angular/animations": "^4.0.0",
"@angular/common": "4.1.0",
"@angular/compiler": "4.1.0",
"@angular/compiler-cli": "4.1.0",
"@angular/core": "^4.1.0",
"@angular/forms": "4.1.0",
"@angular/http": "4.1.0",
"@angular/platform-browser": "4.1.0",
"@angular/platform-browser-dynamic": "4.1.0",
"@ionic-native/background-fetch": "^4.5.2",
"@ionic-native/barcode-scanner": "^4.4.2",
"@ionic-native/ble": "^3.14.0",
"@ionic-native/core": "^4.5.2",
"@ionic-native/local-notifications": "^4.4.2",
"@ionic-native/splash-screen": "3.7.0",
"@ionic-native/status-bar": "3.7.0",
"@ionic/storage": "^2.0.1",
"angularfire2": "^5.0.0-rc.4",
"chart.js": "^2.5.0",
"cordova-ios": "4.5.4",
"cordova-plugin-background-fetch": "^5.1.1",
"cordova-plugin-badge": "^0.8.5",
"cordova-plugin-ble-central": "^1.1.4",
"cordova-plugin-compat": "^1.1.0",
"cordova-plugin-console": "^1.1.0",
"cordova-plugin-device": "1.1.4",
"cordova-plugin-ionic-webview": "^1.1.11",
"cordova-plugin-local-notification": "^0.9.0-beta.1",
"cordova-plugin-splashscreen": "~4.0.1",
"cordova-plugin-statusbar": "2.2.2",
"cordova-plugin-whitelist": "1.3.1",
"cordova-sqlite-storage": "^2.0.4",
"firebase": "^4.5.0",
"ionic-angular": "3.2.0",
"ionic-plugin-keyboard": "~2.2.1",
"ionicons": "3.0.0",
"moment": "^2.19.2",
"ng2-charts": "^1.5.0",
"phonegap-plugin-barcodescanner": "^7.0.0",
"promise-polyfill": "7.0.0",
"rxjs": "5.1.1",
"sw-toolbox": "3.6.0",
"web-animations-js": "^2.3.1",
"zone.js": "0.8.10"
},
"devDependencies": {
"@angular/cli": "^1.6.0",
"@ionic/app-scripts": "^1.3.7",
"@types/jasmine": "^2.8.2",
"@types/node": "^8.0.58",
"angular2-template-loader": "^0.6.2",
"codecov": "^3.0.0",
"html-loader": "^0.5.1",
"istanbul-instrumenter-loader": "^3.0.0",
"jasmine": "^2.8.0",
"jasmine-core": "^2.8.0",
"jasmine-spec-reporter": "^4.2.1",
"karma": "^1.7.1",
"karma-chrome-launcher": "^2.2.0",
"karma-coverage-istanbul-reporter": "^1.3.0",
"karma-jasmine": "^1.1.1",
"karma-jasmine-html-reporter": "^0.2.2",
"karma-mocha-reporter": "^2.2.5",
"karma-remap-istanbul": "^0.6.0",
"karma-sourcemap-loader": "^0.3.7",
"karma-webpack": "^2.0.6",
"null-loader": "^0.1.1",
"protractor": "^5.2.2",
"ts-loader": "^3.2.0",
"ts-node": "^4.0.1",
"tslint": "^5.8.0",
"tslint-eslint-rules": "^4.1.1",
"typescript": "2.2.1"
},
"cordovaPlugins": [
"cordova-plugin-whitelist",
"cordova-plugin-statusbar",
"cordova-plugin-console",
"cordova-plugin-device",
"cordova-plugin-splashscreen",
"ionic-plugin-keyboard"
],
"cordovaPlatforms": [
"ios",
{
"platform": "ios",
"version": "",
"locator": "ios"
}
],
"description": "",
"cordova": {
"plugins": {
"cordova-plugin-ble-central": {
"BLUETOOTH_USAGE_DESCRIPTION": " "
},
"cordova-plugin-device": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-whitelist": {},
"ionic-plugin-keyboard": {},
"cordova-sqlite-storage": {},
"cordova-plugin-ionic-webview": {},
"cordova-plugin-local-notification": {},
"phonegap-plugin-barcodescanner": {
"CAMERA_USAGE_DESCRIPTION": " "
},
"cordova-plugin-background-fetch": {},
"cordova-plugin-console": {}
},
"platforms": [
"ios"
]
}
}
Check your scope in fetchCallback
Don't you want to this.fetchCallback.bind(this)
?
this.backgroundFetch.configure(config).then(this.fetchCallback.bind(this));
@christocracy Hi, arrow functions in Typescript solve this scope issue. To double check I did also rewrite this with your suggestion, but it did not work.
Previously, I also tried just writing a simple console log function with the same error previously.
this.backgroundFetch.configure(config).then(()=>console.log('callback called!'));
[TSBackgroundFetch performFetchWithCompletionHandler]
Warning: Application delegate received call to -application:performFetchWithCompletionHandler: but the completion handler was never called.
Thank you for taking a look!
Warning: Application delegate received call to -application:performFetchWithCompletionHandler: but the completion handler was never called.
You are not calling BackgroundFetch.finish()
Hey @mattychen, how did you solve it? I'm having the same problem, only the first fetch works and then I got the same message than your first post.
Thanks!
@ferreyes Are you executing BackgroundGeolocation#finish
in your fetch callback?
@ferreyes @christocracy unfortunately I never got it to work, even when I called BackgroundFetch.finish(), so I did something roundabout...feel free to comment and let me know if you find a solution
I call backgroundFetch.stop() on platform.resume when the app is being resumed and being used
and then I call backgroundFetch.configure when the app is paused. This actually re-initiates the backgroundFetch module each time the app is resumed/ paused.
platform.resume.subscribe(()=>{
backgroundFetch.status().then(val=>console.log(val))
backgroundFetch.stop();
})
platform.pause.subscribe(() => {
backgroundFetch.configure(config)
.then(()=> {
console.log('Background fetch callback called');
this.localNotifications.schedule({
title: 'test',
text: 'test msg'
})
// Fetch activity coded here
this.backgroundFetch.finish();
})
.catch(e => console.log('Error initializing background fetch', e));
}
)
Hi @mattychen , take a look at my code. It works well in my project.
platform.ready().then(() => {
const config: BackgroundFetchConfig = {
stopOnTerminate: false, // Set true to cease background-fetch from operating after user "closes" the app. Defaults to true.
};
console.log("Haha");
this.backgroundFetch.configure(config).then(this.fetchCallback.bind(this));
});
And
fetchCallback = () => {
console.log('Background Fetch start');
let message = "My test";
this.scheduleNotification(message);
this.backgroundFetch.finish();
}
@mattychen Don't do what you're doing in pause
/ resume
. Just do it once in ready
.
Hi @pierrebiazotto, I just replaced my code by yours and now I got a different error message but the behavior is the same, I can only simulate the background fetch process once, then I receive this error:
2018-04-18 15:08:37.132397-0500 1000_ mda[490:56014] CDVBackgroundFetch AppDelegate received fetch event
2018-04-18 15:08:37.132474-0500 1000_ mda[490:56014] [TSBackgroundFetch performFetchWithCompletionHandler]
2018-04-18 15:08:37.132492-0500 1000_ mda[490:56014] - CDVBackgroundFetch Rx Fetch Event
2018-04-18 15:08:37.162028-0500 1000_ mda[490:56014] Background Fetch start
2018-04-18 15:08:37.162809-0500 1000_ mda[490:56014] My test
2018-04-18 15:08:37.163672-0500 1000_ mda[490:56014] [TSBackgroundFetch finish]: CDVBackgroundFetch
2018-04-18 15:08:42.224850-0500 1000_ mda[490:56014] [TSBackgroundFetch doFinish] Complete, UIBackgroundFetchResult: 0, responses: 1
2018-04-18 15:08:53.423502-0500 1000_ mda[490:56014] CDVBackgroundFetch AppDelegate received fetch event
2018-04-18 15:08:53.423811-0500 1000_ mda[490:56014] [TSBackgroundFetch performFetchWithCompletionHandler]
2018-04-18 15:08:53.423944-0500 1000_ mda[490:56014] - CDVBackgroundFetch Rx Fetch Event
2018-04-18 15:08:53.538463-0500 1000_ mda[490:56069] TIC Read Status [1:0x1c0171640]: 1:57
2018-04-18 15:08:53.539723-0500 1000_ mda[490:56069] TIC Read Status [1:0x1c0171640]: 1:57
2018-04-18 15:08:53.541360-0500 1000_ mda[490:56069] TIC Read Status [2:0x1c4175300]: 1:57
2018-04-18 15:08:53.541416-0500 1000_ mda[490:56069] TIC Read Status [2:0x1c4175300]: 1:57
2018-04-18 15:08:53.542091-0500 1000_ mda[490:56069] TIC Read Status [3:0x1c0176200]: 1:57
2018-04-18 15:08:53.542140-0500 1000_ mda[490:56069] TIC Read Status [3:0x1c0176200]: 1:57
2018-04-18 15:15:40.614667-0500 1000_ mda[490:56014] CDVBackgroundFetch AppDelegate received fetch event
2018-04-18 15:15:40.614909-0500 1000_ mda[490:56014] [TSBackgroundFetch performFetchWithCompletionHandler]
2018-04-18 15:15:40.615049-0500 1000_ mda[490:56014] Warning: Application delegate received call to -application:performFetchWithCompletionHandler: but the completion handler was never called.
2018-04-18 15:15:40.615248-0500 1000_ mda[490:56014] - CDVBackgroundFetch Rx Fetch Event
BackgroundFetch
does not support a Promise API. There's no possible way this could work (unless you're using some sort of wrapper):
this.backgroundFetch.configure(config).then(this.fetchCallback.bind(this));
Don't get cute, just follow the example in README:
BackgroundFetch.configure(() => {
console.log('- Fetch received');
BackgroundFetch.finish();
}, (error) => {
console.log('- Fetch error');
}, {
minimumFetchInterval: 15, // <-- default is 15
stopOnTerminate: false // <-- Android only
});
I'm seeing something similar, where when I watch the log through chrome://inspect, I can see my web requests in a 'pending' state, but finish doesn't seem to be called.
Is it possible that my Google Nexus is blocking web requests as part of some battery saving attempt? I've enabled unlimited data, disabled battery saving for the app and I'm on WiFi.
I've spent 3 days trying to figure this out. It works perfectly on iOS, but Android seems to be the culprit. Not the plugin's fault, I'm sure.
You’re not observing $ adb logcat
, the device’s system logs?
Thanks for the swift reply. I am.
02-22 22:56:22.850 14099 14099 D TSBackgroundFetch: - Background Fetch event received 02-22 23:03:44.135 14099 14279 D TSBackgroundFetch: - finish 02-22 23:03:44.135 14099 14279 D TSBackgroundFetch: - jobFinished
The finish and jobFinished only appeared after I reopened the app.
Could it be that I need to manually grant the application something like 'android.permission.REQUEST_COMPANION_USE_DATA_IN_BACKGROUND' permission? I'm not an Android guru, so I'm not even sure that is the right permission.
It looks like the request sits as a pending web request until I reopen the app. The second it opens up, the request runs against my back-end and I get results in < 100ms.
I mean the raw, unfiltered adb logcat
so you can see the system logs, not just those from TSBackgroundFetch
No. I've only been watching the TSBackgroundFetch log. Is there some sort of way to filter the logs to only show what would be relevant to debugging?
I saw the text below in the log just now and it looks suspicious, but I don't know what it means.
02-22 23:10:16.165 577 1006 E QC-QMI : linux_qmi_qmux_io_wake_lock: Err in writing wakelock=qmuxd_port_wl_0, error [1:Operation not permitted] 02-22 23:10:16.165 577 1006 E QC-QMI : linux_qmi_qmux_io_wake_unlock: Err in writing wakelock=qmuxd_port_wl_0, error [1:Operation not permitted]
Did you google "linux_qmi_qmux_io_wake_lock: Err in writing wakelock"?
Also see http://dontkillmyapp.com for your device manufacturer.
I did. I saw a bunch of references to it, but no real explanation of what it is.
I did check http://dontkillmyapp.com and the devices I'm testing on are Nexus 6P, Samsung Galaxy 7, J1 (which I totally understand might not work since it is a horrible device) and then a bunch of emulators.
Are you using a Promise and await with your Http request?
I've tried using a standard promise created from an observable via toPromise()
which produces a normal promise.
This is Ionic 3, so I've also tried using an observable and subscribing to it. Do you think that could be causing the issue?
What do you mean by 'await'? I'm not using any ES6 async
functions here. The callback is a stock standard function.
BackgroundFetch.configure(() => {
this.postLatest().subscribe(
() => {
logger.info("Heartbeat push completed in background mode.")
}, err => {
logger.error("Heartbeat push failed in background mode.");
logger.error(err);
}, () => {
logger.info("Completed background mode fetch.");
BackgroundFetch.finish();
});
}, (error) => {
logger.error(error);
}, {
minimumFetchInterval: 15,
stopOnTerminate: false,
startOnBoot: true,
forceReload: true,
});
That's an example of the code using an observable.
I've traced the adb
logs and this is what I got:
From the log, after we see TSBackgroundFetch: - Background Fetch event received
in the TSBackgroundFetch logs:
02-22 23:42:13.617 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : Posting heartbeat... │
02-22 23:42:13.617 4713 4713 I chromium: [INFO:CONSOLE(16234)] "Posting heartbeat...", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:13.617 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : Pushing 0 duty status events to server... │
02-22 23:42:13.618 4713 4713 I chromium: [INFO:CONSOLE(16234)] "Pushing 0 duty status events to server...", source: http://localhost:8080/build/main.js (16│
02-22 23:42:13.618 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : Pushing 21 fixes to server... │
02-22 23:42:13.618 4713 4713 I chromium: [INFO:CONSOLE(16234)] "Pushing 21 fixes to server...", source: http://localhost:8080/build/main.js (16234)
The request to the API just sits there and hangs... If I call the code that hits the server from the UI while the app is open, it works 100%.
After we reopen the app, immediately, the request to the server completes. No errors anywhere in the log.
02-22 23:42:38.130 594 4287 D audio_hw_primary: enable_audio_route: usecase(1) apply and update mixer path: low-latency-playback speaker │
02-22 23:42:38.130 594 4287 D audio_route: Apply path: low-latency-playback speaker │
02-22 23:42:38.157 1217 1217 E BufferItemConsumer: [unnamed-1217-58] Failed to release buffer: Unknown error -1 (1) │
02-22 23:42:38.187 4713 4713 D CordovaActivity: Started the activity. │
02-22 23:42:38.189 4713 4713 D CordovaActivity: Resumed the activity. │
02-22 23:42:38.190 4713 4713 I TSLocationManager: - onResume │
02-22 23:42:38.207 1217 1217 E BufferItemConsumer: [unnamed-1217-59] Failed to release buffer: Unknown error -1 (1) │
02-22 23:42:38.212 594 4287 D audio_hw_primary: out_write: retry previous failed cal level set │
02-22 23:42:38.280 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : [object Object] │
02-22 23:42:38.280 4713 4713 I chromium: [INFO:CONSOLE(16234)] "[object Object]", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.280 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/vendor.js: Line 62203 : [object Object] │
02-22 23:42:38.281 4713 4713 I chromium: [INFO:CONSOLE(62203)] "[object Object]", source: http://localhost:8080/build/vendor.js (62203) │
02-22 23:42:38.341 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : App resumed. │
02-22 23:42:38.341 4713 4713 I chromium: [INFO:CONSOLE(16234)] "App resumed.", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.403 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : [object Object] │
02-22 23:42:38.403 4713 4713 I chromium: [INFO:CONSOLE(16234)] "[object Object]", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.448 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : [object Object] │
02-22 23:42:38.449 4713 4713 I chromium: [INFO:CONSOLE(16234)] "[object Object]", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.471 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : [object Object] │
02-22 23:42:38.471 4713 4713 I chromium: [INFO:CONSOLE(16234)] "[object Object]", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.480 23599 3595 I EventLogSendingHelper: Sending log events. │
02-22 23:42:38.489 432 597 E SurfaceFlinger: Failed to find layer (SnapshotStartingWindow for taskId=116#0) in layer parent (no-parent). │
02-22 23:42:38.515 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : [object Object] │
02-22 23:42:38.515 4713 4713 I chromium: [INFO:CONSOLE(16234)] "[object Object]", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.610 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : [object Object] │
02-22 23:42:38.610 4713 4713 I chromium: [INFO:CONSOLE(16234)] "[object Object]", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.632 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : [object Object] │
02-22 23:42:38.632 4713 4713 I chromium: [INFO:CONSOLE(16234)] "[object Object]", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.645 1217 8563 I zygote64: Explicit concurrent copying GC freed 18800(932KB) AllocSpace objects, 0(0B) LOS objects, 49% free, 7MB/14MB, pause│
02-22 23:42:38.658 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : [object Object] │
02-22 23:42:38.658 4713 4713 I chromium: [INFO:CONSOLE(16234)] "[object Object]", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.680 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : [object Object] │
02-22 23:42:38.680 4713 4713 I chromium: [INFO:CONSOLE(16234)] "[object Object]", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.707 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : [object Object] │
02-22 23:42:38.708 4713 4713 I chromium: [INFO:CONSOLE(16234)] "[object Object]", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.735 594 751 D audio_hw_primary: disable_audio_route: usecase(1) reset and update mixer path: low-latency-playback speaker │
02-22 23:42:38.741 594 751 D audio_hw_primary: disable_snd_device: snd_device(2: speaker) │
02-22 23:42:38.894 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : Heartbeat push completed in background mode. │
02-22 23:42:38.894 4713 4713 I chromium: [INFO:CONSOLE(16234)] "Heartbeat push completed in background mode.", source: http://localhost:8080/build/main.js │
02-22 23:42:38.895 4713 4713 D SystemWebChromeClient: http://localhost:8080/build/main.js: Line 16234 : Completed background mode fetch. │
02-22 23:42:38.895 4713 4713 I chromium: [INFO:CONSOLE(16234)] "Completed background mode fetch.", source: http://localhost:8080/build/main.js (16234) │
02-22 23:42:38.896 4713 4839 D TSBackgroundFetch: - finish │
02-22 23:42:38.896 4713 4839 D TSBackgroundFetch: - jobFinished
Do you think this is just a case of data getting disabled in the background? Do you know if there is any way to confirm that it is what's happening?
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions. You may also mark this issue as a "discussion" and I will leave this open.
Closing this issue after a prolonged period of inactivity. Fell free to reopen this issue, if this still affecting you.
Hello @sta55en
I have same issue with sending request. Chrome DevTools is showing requests in a 'pending' state and never finished. Do you figure out how can it be solved sending request by browser? If I am using cordova-plugin-advanced-http then it is working well.
Thank you
hi, first thanks for ur plugin i really appreciate ur hard work on it i tried this plugin with ios simulator where i needed to schedule local notification first time fires nicely and the local notification was scheduled perfectly but when i tried to do it again i got this message in xcode console
what i can understand here that it might the finish() function wasnt called even though i put it inside configure function
if u can help me with this issue pls