Versions Prüfung

  • Antworten:10
heyhey83
  • Forum-Beiträge: 51

20.04.2020, 22:27:45 via Website

Gibt es eine möglickkeit das man über eine url die App version überprüfen kann und wenn ja wie geht das?

Mit freundlichen Grüßen
Roberto.

Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

21.04.2020, 08:32:34 via Website

Hallo Roberto,
du kannst die Version der App in der App selbst auslesen:
https://developer.android.com/studio/publish/versioning

Die Frage ist was du machen willst und warum die App Version über eine URL abfragbar sein sollte?
Das passt nicht zusammen oder du hast dein Vorhaben nicht genau erklärt

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

21.04.2020, 08:55:41 via Website

Also ich meine das so das die App von selbst prüft ob es eine neuere version gibt als die ältere, quasie ob es ein Update gibt.

Hilfreich?
Kommentieren
Ludy
  • Admin
  • Forum-Beiträge: 7.957

21.04.2020, 09:40:39 via App

Hallo Roberto,

wenn du einen Server hast, dann könnte ich dir das PHP Script hier posten und die entsprechende Anfrage.
Habe ich in meiner App eingebaut ;-)

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

☕ Buy Me A Coffee ☕

Lebensmittelwarnung-App

✨Meine Wunschliste✨

📲Telegram NextPit News📲

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

21.04.2020, 11:51:47 via Website

Ja ich habe ein Server.

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

21.04.2020, 12:40:35 via Website

Also auf Android Seite hab ich das so gemacht.
@Ludy ist dem noch was hinzuzufügen?

public class AutoUpdater {

/**
 * Sucht den aktuellen Versionscode heraus
 *
 * @param context Applikationskontext
 * @return App Versionscode
 */
public static int getVersionCode(Context context) {
    PackageManager pm = context.getPackageManager();
    try {
        PackageInfo pi = pm.getPackageInfo(context.getPackageName(), 0);
        return pi.versionCode;
    } catch (NameNotFoundException ex) {
    }
    return 0;
}

/**
 * Pr?ft ob ein nues Update verfügbar ist und zeigt ein PopUp an, wenn vorhanden
 *
 * @param ctx Applikationskontext
 * @return
 */
public static boolean checkForUpdates(final Context ctx) {
    String Url = "http://api.example.com/app/info";//Hier mit deiner URL ersetzen.

    Ion.with(ctx).load(Url).asJsonObject().setCallback(new FutureCallback<JsonObject>() {

        @Override
        public void onCompleted(Exception arg0, JsonObject os) {


            try {

                JsonObject o = os.getAsJsonObject("data");

                int version = o.get("version").getAsInt();
                String downloadUrl = o.get("url").getAsString();

                String desc = "";

                if (o.has("descr")) {
                    desc = o.get("desc").getAsString();
                }


                if (version > getVersionCode(ctx)) {
                    //Neue version can be downloaded on @url

                    final TextView message = new TextView(ctx);

                    final SpannableString s =
                            new SpannableString(Tools.getStringFromResources(ctx, R.string.newVersionText) + downloadUrl + "\n\n" + desc);
                    Linkify.addLinks(s, Linkify.WEB_URLS);
                    message.setText(s);
                    message.setMovementMethod(LinkMovementMethod.getInstance());

                    new AlertDialog.Builder(ctx)
                            .setTitle(Tools.getStringFromResources(ctx, R.string.newVersion))
                                    .setCancelable(true)
                                    .setIcon(android.R.drawable.ic_dialog_info)
                                    .setView(message)
                                    .setPositiveButton(Tools.getStringFromResources(ctx, R.string.OK), null)
                                    .create().show();

                }


            } catch (Exception e) {

                e.printStackTrace();
            }


        }
    });

    return false;
}

Die Json dazu so:
{
"version": "1413",
"url": "http://app.example.com/app/myApp.apk"
}

Die PHP könnte dann die Version aus der neusten Datei auf dem Server auslesen und den Pfad für den Download mitgeben.

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

21.04.2020, 15:42:58 via Website

Vorerst privat.

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

21.04.2020, 16:29:54 via Website

Okay soweit so gut aber wie sieht dann die PHP aus.

Hilfreich?
Kommentieren
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

21.04.2020, 18:47:41 via Website

das kommt darauf an wie du die Stuktur haben willst und welche Information reichen soll.

Skizziert etwas so:

<?php

     $files = scandir('.', SCANDIR_SORT_DESCENDING);
     $apkFile = null;  
     for($file in $files){

        if(strpos($file, '.apk') !== false){ //apk Datei gefunden
          $apkFile = $file;
        }    
     }

     if($apkFile == null){
      die(json_encode(array("version"=>0,"url"=>"")));//Leeres Ergebnis bzw error behandlung
     }   



 echo json_encode(array("version"=>0,"url"=>"url to $apkFile));     

?>

Dieses PHP Sktript liest alle Dateien im aktuellen Verzeichnis uns sucht sich die APK mit der höchsten Nummer raus.
Das setzt voraus dass du deine App bzw die APK Datei passend benennst und dann ablegst.
Version wird jetzt nicht mitgegeben, dass musst du ggf. noch machen,je nachdem wie der Dateiname aussieht.

Deployen der App via FTP etc. musst du dann natürlich auch machen.
Die Url to APK File musst du auch mit deiner Domain und dem Pfad zur Datei ersetzen.

PS: Nicht PHP7 style weil optionale PHP typisierung weggelassen aber das sollte dir erstmal egal sein ;)

— geändert am 21.04.2020, 18:48:29

LG Pascal //It's not a bug, it's a feature. :) ;)

Hilfreich?
Kommentieren
heyhey83
  • Forum-Beiträge: 51

22.04.2020, 10:32:18 via Website

Ja ich nutze PHP 7 aber das ist ja auch erst mal egal. Ich werde das ganze mal testen.

Hilfreich?
Pascal P.
Kommentieren