I want to continue monitor events using ParseLiveQuery even if an InAppBrowser is launched. But I couldn’t.
I noticed all events from Parse server appears to be paused/suspended, when an InAppBrowser is launched.
Here is a simplified code to demonstrate the problem:
export interface PageInterface {
title: string;
name: string;
component: any;
icon: string;
logsOut?: boolean;
index?: number;
tabName?: string;
tabComponent?: any;
}
@Component({
templateUrl: 'app.template.html'
})
export class ConferenceApp {
@ViewChild(Nav) nav: Nav;
appPages: PageInterface[] = [...];
loggedInPages: PageInterface[] = [...];
rootPage: any;
browser: any;
constructor(
public events: Events,
public userData: UserData,
public menu: MenuController,
public platform: Platform,
public confData: ConferenceData,
public parseData: ParseData,
public storage: Storage,
public splashScreen: SplashScreen,
private iab: InAppBrowser
) {
this.rootPage = TabsPage;
this.platformReady();
}
listenToParse(){
this.parseData.subscribe().then(
(subscription)=> {
subscription.on('open', () => {
console.log('subscription opened');
});
subscription.on('update', (object:any) => {
console.log('object updated');
});
},
(error)=>{
console.log(error);
}
);
}
openPage(page: PageInterface) {
...
}
enableMenu(loggedIn: boolean) {
this.menu.enable(loggedIn, 'loggedInMenu');
this.menu.enable(!loggedIn, 'loggedOutMenu');
}
platformReady() {
// Call any initial plugins when ready
this.platform.ready().then(() => {
this.splashScreen.hide();
this.listenToParse();
setTimeout(() => {
console.log("time out fired, launch iab!");
this.browser = this.iab.create("https://www.google.com","_blank");
},60000);
});
}
isActive(page: PageInterface) {
...
}
}
In the demo code above, we listen to changes of data from Parse server. It works until the InAppBrowser is launched, 60 seconds later. This is the log output:
2017-06-27 16:36:56.522724+0800 My App[2006:312223] subscription opened
2017-06-27 16:37:24.459593+0800 My App[2006:312223] object updated
2017-06-27 16:37:26.982129+0800 My App[2006:312223] object updated
2017-06-27 16:37:30.032242+0800 My App[2006:312223] object updated
2017-06-27 16:37:32.757926+0800 My App[2006:312223] object updated
2017-06-27 16:37:34.658421+0800 My App[2006:312223] object updated
2017-06-27 16:37:36.531520+0800 My App[2006:312223] object updated
2017-06-27 16:37:38.509784+0800 My App[2006:312223] object updated
2017-06-27 16:37:41.072448+0800 My App[2006:312223] object updated
2017-06-27 16:37:42.989296+0800 My App[2006:312223] object updated
2017-06-27 16:37:44.706035+0800 My App[2006:312223] object updated
2017-06-27 16:37:46.826566+0800 My App[2006:312223] object updated
2017-06-27 16:37:49.347574+0800 My App[2006:312223] object updated
2017-06-27 16:37:51.268267+0800 My App[2006:312223] object updated
2017-06-27 16:37:53.182077+0800 My App[2006:312223] time out fired, launch iab!
2017-06-27 16:37:53.621465+0800 My App[2006:312223] THREAD WARNING: ['InAppBrowser'] took '420.479980' ms. Plugin should use a background thread.
2017-06-27 16:37:53.623936+0800 My App[2006:312223] object updated
2017-06-27 16:37:53.862435+0800 My App[2006:312379] libMobileGestalt MobileGestaltSupport.m:153: pid 2006 (My App) does not have sandbox access for frZQaeyWLUvLjeuEK43hmg and IS NOT appropriately entitled
2017-06-27 16:37:53.862619+0800 My App[2006:312379] libMobileGestalt MobileGestalt.c:550: no access to InverseDeviceID (see <rdar://problem/11744455>)
2017-06-27 16:37:57.409094+0800 My App[2006:312223] object updated
2017-06-27 16:37:59.316170+0800 My App[2006:312712] WF: === Starting WebFilter logging for process My App
2017-06-27 16:37:59.316283+0800 My App[2006:312712] WF: _userSettingsForUser mobile: {
filterBlacklist = (
);
filterWhitelist = (
);
restrictWeb = 1;
useContentFilter = 0;
useContentFilterOverrides = 0;
whitelistEnabled = 0;
}
2017-06-27 16:37:59.316718+0800 My App[2006:312712] WF: _WebFilterIsActive returning: NO
//InAppBrowser launched.
No more object updated event after InAppBrowser launched. Why?
My dependencies:
"dependencies": {
"@angular/common": "4.1.2",
"@angular/compiler": "4.1.2",
"@angular/compiler-cli": "4.1.2",
"@angular/core": "4.1.2",
"@angular/forms": "4.1.2",
"@angular/http": "4.1.2",
"@angular/platform-browser": "4.1.2",
"@angular/platform-browser-dynamic": "4.1.2",
"@ionic-native/core": "3.10.2",
"@ionic-native/in-app-browser": "3.10.2",
"@ionic-native/splash-screen": "3.10.2",
"@ionic-native/status-bar": "3.10.2",
"@ionic/storage": "2.0.1",
"ionic-angular": "3.3.0",
"ionicons": "3.0.0",
"parse": "1.9.2",
"rxjs": "5.1.1",
"sw-toolbox": "3.4.0",
"zone.js": "0.8.11"
},
"devDependencies": {
"@ionic/app-scripts": "1.3.7",
"@ionic/cli-plugin-ionic-angular": "1.2.0",
"typescript": "2.3.3"
}