cordova-plugin-code-push icon indicating copy to clipboard operation
cordova-plugin-code-push copied to clipboard

downloadProgress callback no longer being called on cordova-plugin-code-push v2.0.0

Open rex-iotum opened this issue 3 years ago • 10 comments

Description

The downloadProgress callback is no longer being called since the switch to cordova-plugin-advanced-http. The plugin source code calling downloadProgress has been removed from RemotePackage.prototype.download.

The docs still reference as if downloadProgress is still going to be called. https://github.com/microsoft/cordova-plugin-code-push#codepushsync

Reproduction

  • Call codepush.sync with the documented codePush.sync(syncCallback?, syncOptions?, downloadProgress?, syncErrback?);
  • Attach a debugger to the downloadProgress callback function
  • Verify that the debugger is never triggered

Additional Information

  • cordova-plugin-code-push version: v2.0.0
  • List of installed plugins: cordova-plugin-code-push + dependencies
  • Cordova version: v6.1.1
  • iOS/Android/Windows version: iOS 14.0.1
  • Does this reproduce on a debug build or release build?: Both
  • Does this reproduce on a simulator, or only on a physical device?: Physical, most likely both

rex-iotum avatar Oct 30 '20 14:10 rex-iotum

I'm getting the same here.

I found RemotePackage.prototype.download on bin/www/remotePackage.js method is receiving downloadProgress but it's not being called.

ecorona avatar Nov 05 '20 17:11 ecorona

Same symptoms here. The downloadProgress-callback-argument of codePush.sync is never called.

trampi avatar Dec 04 '20 17:12 trampi

Same here. Also, I see the app being downloaded and installed. But, stuck with white screen after completion. Dashboard reports rollback for the update, after that. Is that related to this?

ankitjainOfficial avatar Dec 14 '20 19:12 ankitjainOfficial

@ankitjainOfficial if your error is only reproducible in iOS, then you might want to check that no file of your app contains utf8 multibyte characters. Seems like the iOS cordova push fails the integrity check of the update due to how the hash is calculated and the handling of filename encoding.

If you just use ASCII characters for your filenames you can rule this problem out.

https://github.com/microsoft/cordova-plugin-code-push/issues/660#issuecomment-740023296

trampi avatar Dec 15 '20 08:12 trampi

@trampi Thanks for the comment. It's just a normal ionic/angular build. So, I didn't find any multibyte characters.

ankitjainOfficial avatar Dec 15 '20 13:12 ankitjainOfficial

@ankitjainOfficial, ahh, I see. We have a angular / cordova application as well (no ionic), but had a static image asset named "weiß.jpg" (german for "white") -> the "ß"-Umlaut in the filename of the static asset lead to errors after installing code push updates.

The error reported through the console on iOS-devices was "The update contents failed the data integrity check". We could not reproduce this error on Android devices, only iOS-devices / simulators were affected.

Maybe you could open a new ticket with the error output of codepush in the dev console? That should help finding the root cause.

All the best, trampi

trampi avatar Dec 15 '20 13:12 trampi

@rex-iotum did you have any progress on this? i'm having the same issue.

Dependency set is like below

"@angular/animations": "~10.0.8", "@angular/cdk": "^10.0.2", "@angular/common": "~10.0.8", "@angular/compiler": "~10.0.8", "@angular/core": "~10.0.8", "@angular/fire": "^6.0.2", "@angular/forms": "~10.0.8", "@angular/localize": "^10.0.8", "@angular/platform-browser": "~10.0.8", "@angular/platform-browser-dynamic": "~10.0.8", "@angular/router": "~10.0.8", "@ionic-native/badge": "^5.30.0", "@ionic-native/barcode-scanner": "^5.28.0", "@ionic-native/battery-status": "^5.28.0", "@ionic-native/camera": "^5.28.0", "@ionic-native/camera-preview": "^5.28.0", "@ionic-native/code-push": "^5.30.0", "@ionic-native/core": "^5.0.0", "@ionic-native/device": "^5.28.0", "@ionic-native/device-motion": "^5.28.0", "@ionic-native/device-orientation": "^5.28.0", "@ionic-native/document-scanner": "^5.28.0", "@ionic-native/fcm": "^5.30.0", "@ionic-native/geolocation": "^5.28.0", "@ionic-native/globalization": "^5.28.0", "@ionic-native/image-picker": "^5.28.0", "@ionic-native/in-app-browser": "^5.30.0", "@ionic-native/insomnia": "^5.28.0", "@ionic-native/ionic-webview": "^5.28.0", "@ionic-native/keyboard": "^5.30.0", "@ionic-native/local-notifications": "^5.28.0", "@ionic-native/network": "^5.28.0", "@ionic-native/network-interface": "^5.28.0", "@ionic-native/service-discovery": "^5.28.0", "@ionic-native/speechkit": "^5.28.0", "@ionic-native/splash-screen": "^5.0.0", "@ionic-native/status-bar": "^5.0.0", "@ionic-native/text-to-speech": "^5.28.0", "@ionic-native/three-dee-touch": "^5.28.0", "@ionic-native/toast": "^5.28.0", "@ionic-native/zeroconf": "^5.28.0", "@ionic/angular": "^5.0.0", "@ng-bootstrap/ng-bootstrap": "^7.0.0", "@pazznetwork/ngx-chat": "^0.10.2", "@xmpp/client": "^0.9.2", "ag-grid-angular": "^23.2.1", "ag-grid-community": "^23.2.1", "chart.js": "^2.9.3", "chartjs-plugin-annotation": "^0.5.7", "chartjs-plugin-datalabels": "^0.7.0", "chartjs-plugin-zoom": "^0.7.7", "cordova-plugin-device": "^2.0.2", "cordova-plugin-ionic-keyboard": "^2.2.0", "cordova-plugin-ionic-webview": "^4.2.1", "cordova-plugin-splashscreen": "^5.0.2", "cordova-plugin-statusbar": "^2.4.2", "cordova-plugin-whitelist": "^1.3.3", "core-js": "^3.6.5", "crypto-js": "^4.0.0", "file-saver": "^2.0.2", "firebase": "^7.21.0", "hammerjs": "^2.0.8", "icon-font-generator": "^2.1.10", "ismobilejs": "^1.1.1", "jquery": "^3.5.1", "jquery-mask-plugin": "^1.14.16", "jshashes": "^1.0.8", "lodash-es": "^4.17.15", "moment": "^2.27.0", "ng-drag-drop": "^5.0.0", "ng-dynamic-component": "^7.0.1-no-barrels.1", "ng-multiselect-dropdown": "0.2.10", "ng2-charts": "^2.3.2", "ngx-color-picker": "^10.0.1", "ngx-device-detector": "^1.4.6", "ngx-joyride": "^2.3.1", "rxjs": "~6.6.2", "swipejs": "^2.2.18", "tslib": "^2.0.0", "zone.js": "~0.10.3"

cankemik avatar Dec 27 '20 12:12 cankemik

As far as I know. the cordova-plugin-advanced-http used to download don't have support for download progress.

ludufre avatar Dec 28 '20 14:12 ludufre

Any solution now? the downloadProgress callback still can no be fire.

Coder7777 avatar Apr 26 '21 18:04 Coder7777

Description

The downloadProgress callback is no longer being called since the switch to cordova-plugin-advanced-http. The plugin source code calling downloadProgress has been removed from RemotePackage.prototype.download.

The docs still reference as if downloadProgress is still going to be called. https://github.com/microsoft/cordova-plugin-code-push#codepushsync

Reproduction

  • Call codepush.sync with the documented codePush.sync(syncCallback?, syncOptions?, downloadProgress?, syncErrback?);
  • Attach a debugger to the downloadProgress callback function
  • Verify that the debugger is never triggered

Additional Information

  • cordova-plugin-code-push version: v2.0.0
  • List of installed plugins: cordova-plugin-code-push + dependencies
  • Cordova version: v6.1.1
  • iOS/Android/Windows version: iOS 14.0.1
  • Does this reproduce on a debug build or release build?: Both
  • Does this reproduce on a simulator, or only on a physical device?: Physical, most likely both

You can try v1.12.0, I downgrade to this version, the downloadProgress callback function working well.

Good luck for you.

https://www.npmjs.com/package/cordova-plugin-code-push/v/1.12.0

Coder7777 avatar Apr 26 '21 18:04 Coder7777