cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rich Storm (JIRA)" <>
Subject [jira] [Created] (CB-12815) WKWebView plugin will not execute Javascript while app is backgrounded
Date Mon, 15 May 2017 13:02:04 GMT
Rich Storm created CB-12815:

             Summary: WKWebView plugin will not execute Javascript while app is backgrounded
                 Key: CB-12815
             Project: Apache Cordova
          Issue Type: Bug
          Components: cordova-plugin-wkwebview-engine
         Environment: iOS
            Reporter: Rich Storm
            Assignee: Shazron Abdullah

iOS 10 now has power saving requirements and will not allow background tasks to function to
save battery. For example, a VoIP app can no longer use a polling strategy to stay awake.
The new recommended way, according to Apple (,
is to use VoIP silent push notifications to wake up the app and do the work. 

I have verified that all VoIP silent push notifications arrive correctly when using the UIWebView
with a vanilla Cordova install. However, when adding the cordova-plugin-wkwebview-engine,
the Javascript callbacks do not fire correctly when receiving the VoIP silent push notification
while the app is in the background. What happens is the first notification is queued, then
the next notification forces the first notification result to the callback. Effectively, making
each push notification 1 behind. When the app is put back into the foreground, the last push
notification callback is fired.

When the app is in the foreground, all works fine.

The issue is with the call to "setTimeout" in the iOSExec.nativeCallback function. It makes
sense that if Apple is trying to minimize background execution to save battery, then they
would limit the use of the setTimeout feature. 

This issue is fixed by changing the iOSExec.nativeCallback function to call the cordova.callbackFromNative
function directly without a setTimeout wrapper.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message