Git Product home page Git Product logo

upgrader's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

upgrader's Issues

Behavior on Android is different from specified in Readme

According to the Readme:

On Android, this widget does nothing as there is no easy way to query the Google Play Store for metadata about an app. Without the metadata, the widget cannot compare the app version with the latest Play Store version. It will not disrupt the widget tree and can be included in an Android without any issues.

However, in my application (not using an Appcast) the upgrader popup was shown to Android users, redirecting them to the AppStore. Looking at the code, it seems like the check has been commented:

//      // If this platform is not iOS, skip the iTunes lookup
//      if (!Platform.isIOS) {
//        return false;
//      }

Not supported in Flutter SDK version 1.13.6, help

I use the latest version from pub.dev: upgrader: ^0.10.1
Then I got this
How to solve it? Thank you

Running "flutter pub get" in BuangDuit...                       
The current Flutter SDK version is 1.13.6.

Because buangduit depends on upgrader >=0.10.1 which requires Flutter SDK version >=1.12.0 <1.13.0, version solving failed.
pub get failed (1; Because buangduit depends on upgrader >=0.10.1 which requires Flutter SDK version >=1.12.0 <1.13.0, version solving failed.)
exit code 1

Where to put the UpgradeAlert

Hi @larryaasen ,

In my app, before the MaterialApp, I have long initializing process, which including the user authentication as well. During the initializing process, there will be a loading screen display. After the initialization, MaterialApp will be called and home is routed to a Login page. In the Login page, it checks if user has been successfully authenticated (during initialization) so it would re-route to the App main page.
So my question is, where should I apply the UpgradeAlert?

Thanks in advance.

Message localization.

Hi, thank you for the great package!

Do I understand correctly that there is no way to make localization for the message with version number?

String message() {
    return 'A new version of ${appName()} is available! Version ${currentAppStoreVersion()} is now available-you have ${currentInstalledVersion()}.';
  }

(file upgrader.dart)

If not possible can you please make the property with this String for customization, please?

Version details not showing

I can see my package, but installed and available version is not displaying.

Faced issues.

  1. After than not able view the version details only alert with appname "A new version of xxx is available! Version null is now available-you have null"

Unhandled Exception: Invalid argument(s) (replacement): Must not be null

I'm getting this error in debug.

flutter version 1.20.4 channel stable
upgrader version 2.5.0
xml version 4.2.0

--on ios--
flutter: upgrader: build UpgradeAlert
flutter: upgrader: package info packageName: com.kolayyakit.KolayYakit
flutter: upgrader: package info version: 2.6
flutter: upgrader: countryCode: US
flutter: upgrader: build UpgradeAlert
[VERBOSE-2:ui_dart_state.cc(166)] Unhandled Exception: Invalid argument(s) (replacement): Must not be null
#0 _StringBase.replaceAll (dart:core-patch/string_patch.dart:637:30)
#1 Upgrader.message (package:upgrader/src/upgrader.dart:248:15)
#2 Upgrader.checkVersion. (package:upgrader/src/upgrader.dart:264:24)
#3 new Future.delayed. (dart:async/future.dart:325:39)
#4 _rootRun (dart:async/zone.dart:1182:47)
#5 _CustomZone.run (dart:async/zone.dart:1093:19)
#6 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
#7 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:1037:23)
#8 _rootRun (dart:async/zone.dart:1190:13)
#9 _CustomZone.run (dart:async/zone.dart:1093:19)
#10 _CustomZone.bindCallback. (dart:async/zone.dart:1021:23)
#11 Timer._createTimer. (dart:async-patch/timer_patch.dart:18:15)
#12 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:<…>

--on android--
I/flutter (13693): upgrader: build UpgradeAlert
I/flutter (13693): upgrader: build UpgradeAlert
I/flutter (13693): upgrader: package info packageName: com.ilerleyen.kolayyakit
I/flutter (13693): upgrader: package info version: 2.6.1
I/flutter (13693): upgrader: appcast is available for this platform
E/flutter (13693): [ERROR:flutter/lib/ui/ui_dart_state.cc(166)] Unhandled Exception: NoSuchMethodError: The method 'replaceAll' was called on null.
E/flutter (13693): Receiver: null
E/flutter (13693): Tried calling: replaceAll("{{appName}}", "Kolay Yakıt")
E/flutter (13693): #0 Object.noSuchMethod (dart:core-patch/object_patch.dart:51:5)
E/flutter (13693): #1 Upgrader.message (package:upgrader/src/upgrader.dart:248:15)
E/flutter (13693): #2 Upgrader.checkVersion. (package:upgrader/src/upgrader.dart:264:24)
E/flutter (13693): #3 new Future.delayed. (dart:async/future.dart:325:39)
E/flutter (13693): #4 _rootRun (dart:async/zone.dart:1182:47)
E/flutter (13693): #5 _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (13693): #6 _CustomZone.runGuarded (dart:async/zone.dart:997:7)
E/flutter (13693): #7 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:1037:23)
E/flutter (13693): #8 _rootRun (dart:async/zone.dart:1190:13)
E/flutter (13693): #9 _CustomZone.run (dart:async/zone.dart:1093:19)
E/flutter (13693): #10 _CustomZone.bindCallback. (dart:async/zone.dart:1021:23)
E/flutter (13693): #11 Timer._createTimer. (dart:async-patch/timer_patch.dart:18:15)
E/flutter (13693): #12 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:397:19)
E/flutter (13693): #13 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:428:5)
E/flutter (13693): #14 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168:12)
E/flutter (13693):
I/flutter (13693): "<" expected at 1:1
I/flutter (13693): upgrader: appcast item count: 0

Unhandled Exception: FormatException: Not a properly formatted version string

Hi, how can I solve this error when implementing the plugin, I did tests and the string that cannot be parse is samsung/hero2ltexx/hero2lte:7.0/NRD90M/G935FXXU2DRB6:user/release-keys

I/flutter (20116): Version: samsung/hero2ltexx/hero2lte:7.0/NRD90M/G935FXXU2DRB6:user/release-keys E/flutter (20116): [ERROR:flutter/lib/ui/ui_dart_state.cc(148)] Unhandled Exception: FormatException: Not a properly formatted version stringE/flutter (20116): #0 Version.parse (package:version/version.dart:134)

Critical compile error

After flutter upgrade to 1.20 I get compile error

Launching lib/main.dart on AOSP on IA Emulator in debug mode...
Running Gradle task 'assembleDebug'...
../../flutter/.pub-cache/hosted/pub.dartlang.org/upgrader-2.5.0/lib/src/appcast.dart:86:36: Error: Method not found: 'XmlDocument.parse'.
      final document = XmlDocument.parse(xmlString);
                                   ^^^^^

It can be fixed by changing
final document = XmlDocument.parse(xmlString);
to
final document = parse(xmlString);

in
/.pub-cache/hosted/pub.dartlang.org/upgrader-2.5.0/lib/src/appcast.dart

But it not solution, because it package cash.

[✓] Flutter (Channel stable, 1.20.0, on Mac OS X 10.14.5 18F132, locale en-US)
 
[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
[✓] Xcode - develop for iOS and macOS (Xcode 11.3)
[✓] Android Studio (version 3.6)
[✓] IntelliJ IDEA Ultimate Edition (version 2019.3.2)
[✓] VS Code (version 1.42.1)
[✓] Connected device (2 available)

Looking for new language translations

I am looking for language translations of message strings for this upgrader package. I already have English and Spanish languages. Looking for many more including Chinese, Japanese, Korean, Russian, French, German, Italian. Please place a comment in this issue with the six translated strings for the language of your choice.

Use this empty form below to get started. Copy this and fill it out:
Language name:
language code:
body:
ignore button:
later button:
update button:
prompt:
release notes:
title:

Note: The body string supports mustache style template variables such as {{appName}}.

Language name: English
language code: en
body: A new version of {{appName}} is available! Version {{currentAppStoreVersion}} is now available-you have {{currentInstalledVersion}}.
ignore button: IGNORE
later button: LATER
update button: UPDATE NOW
prompt: Would you like to update it now?
release notes: Release Notes
title: Update App?

Language name: Spanish
language code: es
body: ¡Una nueva versión de {{appName}} está disponible! La versión {{currentAppStoreVersion}} ya está disponible, usted tiene {{currentInstalledVersion}}.
ignore button: IGNORAR
later button: MÁS TARDE
update button: ACTUALIZAR
prompt: ¿Le gustaría actualizar ahora?
release notes: Notas De Lanzamiento
title: ¿Actualizar la aplicación?

Parse data?

image
How can we parse this data?

I was to check if the bool value of isUpdateAvailable

If true then open updater card
if false open main page

UpdateAlert not working properly

I used updateAlert as the way the example uses. However, when I download the app version 1.01 from App Store, it still asks me to update even though I have the newest version. Why did that happen?

Update now not working

When i choose update now. The package only redirect to app store. But my device is using android.

App Name shows null

I used UpgradeAlert in my app. In the UpgradeAlert, my app name is shown null. How can I resolve this issue?

Why call _sendUserToAppStore when it is running on Android?

void onUserUpdated(BuildContext context, bool shouldPop) {
   if (debugLogging) {
     print('upgrader: button tapped: $buttonTitleUpdate');
   }

   // If this callback has been provided, call it.
   var doProcess = true;
   if (this.onUpdate != null) {
     doProcess = onUpdate();
   }

   if (doProcess) {
     _sendUserToAppStore();
   }

   if (shouldPop) {
     _pop(context);
   }
 }

_updateVersionInfo doesn't pass in mocked client

Mocking the rss feed for this package isn't currently possible without alteration to the upgrader.dart file. Although you can override the client on the Upgrader class, a new instance of the Appcast class is created inside of the _updateVersionInfo method. Since the Upgraders client isn't passed into the Appcast constructor, a new Client is created and the mocked client is not used.

Suggestion

Alter line 155 of the upgrader.dart from this:
final appcast = Appcast();
to this:
final appcast = Appcast(client: client);

Dismiss on press back button android

can you add parameter for dismiss on press back button?
canDismissDialog is parameter for tap outside alert dialog but if use android we also can dismiss dialog with back button

The alert is not shown on iOS

I'm using the latest version and have integrated UpgradeAlert to my home screen:

UpgradeAlert(
      debugLogging: true,
      minAppVersion: leastIosVersion,
      child: _buildBody(),
    )

when the app version is lower than minAppVersion, the alert is shown and the update is forced.
when the app is higher than minAppVersion, despite I see an update is available in logs, the alert is not shown:

flutter: upgrader: package info packageName: com.xxx.app
flutter: upgrader: package info version: 0.00.30
flutter: upgrader: countryCode: MY
 flutter: upgrader: appStoreVersion: 0.00.50
flutter: upgrader: installedVersion: 0.00.30
 flutter: upgrader: isUpdateAvailable: true

Theme.of(context).textTheme.headline6

pub-cache/hosted/pub.flutter-io.cn/upgrader-0.11.1/lib/src/upgrade_alert.dart:388:46: Error: The getter 'headline6' isn't defined for the class 'TextTheme'.

bug help systemName":"iOS","systemVersion":"13.6.1","utsname.machine:":"iPhone11,2", AND systemName":"iOS","systemVersion":"13.6","utsname.machine:":"iPhone12,1","

MESSAGE:#0 _StringBase.replaceAll (dart:core-patch/string_patch.dart:637)
#1 Upgrader.message (package:upgrader/src/upgrader.dart:248)
#2 Upgrader.checkVersion. (package:upgrader/src/upgrader.dart:264)
#3 new Future.delayed. (dart:async/future.dart:325)
#4 _rootRun (dart:async/zone.dart:1182)
#5 _CustomZone.run (dart:async/zone.dart:1093)
#6 _CustomZone.runGuarded (dart:async/zone.dart:997)
#7 _CustomZone.bindCallbackGuarded. (dart:async/zone.dart:1037)
#8 _rootRun (dart:async/zone.dart:1190)
#9 _CustomZone.run (dart:async/zone.dart:1093)
#10 _CustomZone.bindCallback. (dart:async/zone.dart:1021)
#11 SemanticsConfiguration._addArgumentlessAction. (package:flutter/src/semantics/semantics.dart:2847)
#12 _Timer._runTimers (dart:isolate-patch/timer_impl.dart:397)
#13 _Timer._handleMessage (dart:isolate-patch/timer_impl.dart:428)
#14 _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:168)

Publish to AppStore

I used this useful pub, and now i want to publish my app to the appstore,
is there any setting that i should do before publish
for example I think I should add notification to my app id in app store pannel
could you please guide me about this issue?

Is not an issue. Check iOS Update before showing UpgradeAlert.

initState I call below code _checkForIOSUpdate() to see if iOS update available. Based on this result I show UpgradeAlert() or not.

(A) In Build Widget I run _checkUpdate = true ? UpgradeAlert() : new Container() so if no update user doesn't need to see UpgradeAlert() checking...

(B) initState I call _checkForIOSUpdate

/// CHECK FOR IOS UPDATE
  Future _checkForIOSUpdate() async {

    Upgrader().clearSavedSettings();
    Upgrader().debugDisplayAlways = false;
    Upgrader().debugDisplayOnce = false;
    await Upgrader().initialize();
    bool _isAvailable = Upgrader().isUpdateAvailable();
    await Future.delayed(Duration(milliseconds: 250));

    print('_isAvailable: $_isAvailable');

    if (_isAvailable == true) {
      setState(() {
        _checkUpdate = true;
      });
    } else {
      setState(() {
        _checkUpdate = false;
      });
    }
  }


_appStoreVersion & _installedVersion always null at the First Time app running

when isUpdateAvailable() called at the first time app running,
_appStoreVersion & _installedVersion always null, so the dialog will not show,

in my case, i put UpgradeAlert as a child of scaffold in my Home view,.
when application run, and load the home view, i debug the _appStoreVersion & _installedVersion always null
but, when i switch to other page in my app, and back to Home, the _appStoreVersion & _installedVersion filled, and the Popup Alert show..

how to solve this ?

Support flutter 1.17.0 stable

Because app depends on upgrader >=0.10.1 which requires Flutter SDK version >=1.12.0 <1.13.0, version solving failed.

Workaround

Add this your pubspec.yaml

dependency_overrides:
  upgrader: ^0.10.4

By the way, many thanks for the nice work. 👍

I am stuck how to use this for iOS?

Hi,

I am trying to use this package for my iOS app which is in App Store. But I am not sure where to start. Is the example file is enough? Or can you post more deatils now not use for iOS. Also I want to force user to update always. how to disable other 2 buttons? Thanks

First timer facing XML Document issue

Hello there!

I am new to this package and tried installing upgrader 2.4.0 following the tutorial, but got the following error after "Flutter Run":

Compiler message:
../../sdk/flutter/.pub-cache/hosted/pub.dartlang.org/upgrader-2.4.0/lib/src/appcas
t.dart:86:36: Error: Method not found: 'XmlDocument.parse'.
final document = XmlDocument.parse(xmlString);
^^^^^

Could you kindly guide me in the right direction?

Thanks for your contribution!

Where is the full example for android and iOS?

Hi,

Sorry for my English but how to I get my app version from android and iOS. I couldn't find any good example, alse I want to force to update.

I use your example but I am not sure where to put my android app on google palay and iOS app on appstore.

you have:

For Android:

final appcast = Appcast();
final items = await appcast.parseAppcastItemsFromUri('https://raw.githubusercontent.com/larryaasen/upgrader/master/test/testappcast.xml');
final bestItem = appcast.bestItem();

For iOS:

final iTunes = ITunesSearchAPI();
final resultsFuture = iTunes.lookupByBundleId('com.google.Maps');
resultsFuture.then((results) {
    print('results: $results');
});

For iOS I think I will replace this com.google.Maps to my app but for android how to do it?
Also for Android you said 'On Android, setup the Appcast.' how can I set the app cast and where?

If you can created a step by step example it will be good for us

Thanks

Initial Setup

I want to use this lib in my app
could you please tell me the steps?
should I need change anything in xCode runner?
where should i add or change versions?
I recieved this error: upgrader.ITunesResults.version: RangeError (index): Invalid value: Valid value range is empty: 0
and this: upgrader.ITunesResults.trackViewUrl: RangeError (index): Invalid value: Valid value range is empty: 0
I just wraped my Splash Screen Widget with UpgradeAlert widget.

How to change the default text?

First, congratulate them on the application. It works very well.

Is there any way to change the default text "A new version of [app_name] is available! Version [X.X] is now available you have [X.0.0]" to customText ?. To be able to change it to any language like buttonTitleIgnore, buttonTitleLater, buttonTitleUpdate, title or prompt.

Update Alert working but auto updated app still showing the alert on Android

Hi, I don't know how to avoid this thing.
I checked my flutter.versionName is the new one that I remotely share with XML file.
My new flutter.versionName= 1.1.1
But even the app updated it is still showing existed app as 1.0 .
Is that affected by auto-update that is not change the flutter.versionName?

do you have any idea?

Thanks

RangeError (index): Invalid value

I am getting the following error message:

flutter: upgrader: RangeError (index): Invalid value: Valid value range is empty: 0

Not sure if I am doing something wrong here, the examples are not clear.

currentInstalledVersion is null

I'm getting an error with version 2.2.0 (I have to use 2.2.0 because >=2.2.1 breaks iOS with Method not found: 'XmlDocument.parse'.

Looks like _installedVersion is not getting set soon enough, because _packageInfo.version returns a string. You can see from the stack trace, but UpgradeAlert calls Text(Upgrader().message()), which calls currentInstalledVersion(), which is null.

It only happens on when upgrader is show as app first loads. Hot reloading fixes the issue, but a hot restart that loads the upgrader on the first page is throwing this error.

Tried calling WidgetsFlutterBinding.ensureInitialized(); in case that fixes anything, but no luck.

Flutter version 1.20.1

flutter: [2020-08-10 17:17:39.177563 | ConsoleHandler | INFO] ---------- ERROR ----------
flutter: [2020-08-10 17:17:39.177938 | ConsoleHandler | INFO] Invalid argument(s) (replacement): Must not be null
flutter: [2020-08-10 17:17:39.178612 | ConsoleHandler | INFO]
flutter: [2020-08-10 17:17:39.179452 | ConsoleHandler | INFO] ------- STACK TRACE -------
flutter: [2020-08-10 17:17:39.180092 | ConsoleHandler | INFO] #0      _StringBase.replaceAll (dart:core-patch/string_patch.dart:637:30)
flutter: [2020-08-10 17:17:39.180469 | ConsoleHandler | INFO] #1      Upgrader.message (package:upgrader/src/upgrader.dart:251:15)
flutter: [2020-08-10 17:17:39.180754 | ConsoleHandler | INFO] #2      UpgradeCard.build.<anonymous closure> (package:upgrader/src/upgrade_alert.dart:216:43)
flutter: [2020-08-10 17:17:39.181070 | ConsoleHandler | INFO] #3      _FutureBuilderState.build (package:flutter/src/widgets/async.dart:740:55)
flutter: [2020-08-10 17:17:39.181429 | ConsoleHandler | INFO] #4      StatefulElement.build (package:flutter/src/widgets/framework.dart:4663:28)
flutter: [2020-08-10 17:17:39.181869 | ConsoleHandler | INFO] #5      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4546:15)
flutter: [2020-08-10 17:17:39.182208 | ConsoleHandler | INFO] #6      StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4719:11)
flutter: [2020-08-10 17:17:39.182470 | ConsoleHandler | INFO] #7      Element.rebuild (package:flutter/src/widgets/framework.dart:4262:5)
flutter: [2020-08-10 17:17:39.182786 | ConsoleHandler | INFO] #8      BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2667:33)
flutter: [2020-08-10 17:17:39.183146 | ConsoleHandler | INFO] #9      WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:866:20)
flutter: [2020-08-10 17:17:39.183440 | ConsoleHandler | INFO] #10     RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:286:5)
flutter: [2020-08-10 17:17:39.183782 | ConsoleHandler | INFO] #11     SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
flutter: [2020-08-10 17:17:39.184135 | ConsoleHandler | INFO] #12     SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1056:9)
flutter: [2020-08-10 17:17:39.184480 | ConsoleHandler | INFO] #13     SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:972:5)
flutter: [2020-08-10 17:17:39.184796 | ConsoleHandler | INFO] #14     _rootRun (dart:async/zone.dart:1190:13)
flutter: [2020-08-10 17:17:39.185188 | ConsoleHandler | INFO] #15     _CustomZone.run (dart:async/zone.dart:1093:19)
flutter: [2020-08-10 17:17:39.185543 | ConsoleHandler | INFO] #16     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
flutter: [2020-08-10 17:17:39.185855 | ConsoleHandler | INFO] #17     _invoke (dart:ui/hooks.dart:253:10)
flutter: [2020-08-10 17:17:39.186180 | ConsoleHandler | INFO] #18     _drawFrame (dart:ui/hooks.dart:211:3)
flutter: [2020-08-10 17:17:39.186911 | ConsoleHandler | INFO]
flutter: [2020-08-10 17:17:39.187507 | ConsoleHandler | INFO] ======================================================================
flutter: [2020-08-10 17:17:39.216065 | Catcher | INFO] Report result: true

Test Flight

Hi, does this package work for testFlight?

Tag for CriticalIssue should not pop the alert dialog

When an item includes a critical issue tag in the RSS feed for android the alert dialog should not pop after pressing the "Update Now" button.

If the user presses this button and goes back to the app without upgrading, they are no longer gated by the alert dialog (because it was popped).

Expected:
Alert dialog gates the user if they haven't upgraded.

Actual:
Alert dialog goes away after clicking the "Upgrade Now" button.

Debug Issue

Hi,
Im currently developing an app using flutter with your library. With debug version the Upgrade Alert still not appear in my app even it printed out build UpgradeAlert in the debug console (my app bundle is already on app store with the version of 1.1.3 and my current xcode build version is 0.0.1). This is my code:

body: UpgradeAlert( debugLogging: true, debugDisplayOnce: true, debugAlwaysUpgrade: true, child: SizedBox.expand( child: PageView( controller: _pageController, onPageChanged: (index) { setState(() => _currentIndex = index); }, children: buildListContentPageView(context), ), ), ),
and this is my debug console result:
Screenshot 2020-08-21 at 12 59 55
Is it not working with non-realease version if it does how can i debug it and use it in my code?
Thanks for your support.
Edit 1: Im using upgrader version 2.2.0 due to version coflict with xml version.

I still don't know how to use it on Android

what is Appcast and how to configure Appcast?

Appcast Example

final appcast = Appcast();
final items = await appcast.parseAppcastItemsFromUri('https://raw.githubusercontent.com/larryaasen/upgrader/master/test/testappcast.xml');
final bestItem = appcast.bestItem();

What is this URL "https://raw.githubusercontent.com/larryaasen/upgrader/master/test/testappcast.xml"?

<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle">
    <channel>
        <title>Debt Now App - Appcast</title>
        <item>
            <title>Version 1.15.0</title>
            <description>desc</description>
            <pubDate>Sun, 30 Dec 2018 12:00:00 +0000</pubDate>
            <enclosure url="https://play.google.com/store/apps/details?id=com.moonwink.treasury" sparkle:version="1.15.0" sparkle:os="android" />
        </item>
    </channel>
</rss>

Where do I need to configure the XML

final appcastURL = 'https://www.mydomain.com/myappcast.xml';
  final cfg = AppcastConfiguration(url: appcastURL, supportedOS: ['android']);

what is the appcastURL?

version solving failed

The current Flutter SDK version is 1.14.3.

Because xXx depends on upgrader >=0.10.1 which requires Flutter SDK version >=1.12.0 <1.13.0, version solving failed.

How to force updates?

So I have a few questions here on how the package works.

I want to force updates base on the semantic versioning. So if the app updates from 1.0.0 to 2.0.0, I want to be able to force my users to see the message and update, otherwise just pop the alert with default settings.

But for that I would need the version, what is the best way to do that? Because I don't see any public Futures or methods with callbacks.

something like that?

Upgrader().installAppStoreListingURL(myURL);
if (Upgrader().currentAppStoreVersion().someparsing() > Upgrader().currentInstalledVersion().someparsing()) {
 bool  _shouldForceUpgrade = true;
}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.