[ 
https://issues.apache.org/jira/browse/CB-12815?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16585763#comment-16585763
 ] 

ASF GitHub Bot commented on CB-12815:
-------------------------------------

Nauzer opened a new pull request #49: CB-12815: (ios) Fix bug nativeCallback 
not executed when app is in background
URL: https://github.com/apache/cordova-plugin-wkwebview-engine/pull/49
 
 
   ### Platforms affected
   iOS
   
   ### What does this PR do?
   Fix the situation that Cordova native callbacks are not executed when the 
app is backgrounded of the Main UIView is not visible.
   
   ### What testing has been done on this change?
   Testing of native callback functionality being executed.
   
   ### Checklist
   - [ V ] [Reported an 
issue](http://cordova.apache.org/contribute/issues.html) in the JIRA database
   https://issues.apache.org/jira/browse/CB-12815
   - [ V ] Commit message follows the format: "CB-3232: (android) Fix bug with 
resolving file paths", where CB-xxxx is the JIRA ID & "android" is the platform 
affected.
   - [ ] Added automated test coverage as appropriate for this change.
   N/A IMO

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
[email protected]


> WKWebView plugin will not execute Javascript while app is backgrounded
> ----------------------------------------------------------------------
>
>                 Key: CB-12815
>                 URL: https://issues.apache.org/jira/browse/CB-12815
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: cordova-plugin-wkwebview-engine
>         Environment: iOS
>            Reporter: Rich Storm
>            Assignee: Shazron Abdullah
>            Priority: Major
>              Labels: Background, Javascript, WKWebView, wkwebview-baked-in, 
> wkwebview-known-issues
>
> 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 
> (https://developer.apple.com/library/content/documentation/Performance/Conceptual/EnergyGuide-iOS/OptimizeVoIP.html),
>  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. I understand that removing setTimeout is not an elegant solution and 
> may cause deadlocks. Maybe a new argument isBackground or something to that 
> effect.
> src/www/ios/ios-wkwebview-exec.js
> {code:javascript}
>     iOSExec.nativeCallback = function(callbackId, status, message, 
> keepCallback, debug) {
>         var success = status === 0 || status === 1;
>         var args = convertMessageToArgsNativeToJs(message);
>     
>      // setTimeout(function(){
>           cordova.callbackFromNative(callbackId, success, status, args, 
> keepCallback);
>      // }, 0);
>     };
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to