android app med access till server på lokalt nätverk.

Diskussion i 'Applikationsutveckling' startad av peli44, 6 feb 2023.

  1. peli44

    peli44 Infant Droid Medlem

    Blev medlem:
    5 jun 2017
    Inlägg:
    9
    Mottagna gillanden:
    0
    Vi har under många år haft en Cordova App för både IOS och Android. Den används för textning på teatern. Texten hämtas från en server som är kopplad till ett lokalt nätverk. Telefonerna kopplas upp mot detta med WiFi. Allt har fungerat perfekt under många år.
    När vi nu skulle uppdatera appen måste vi byta till SDK 30 och klara Android nya androidversioner., Då fick vi problem med just accessen mot den server som sitter på det lokala nätverkat. För IOS appen fungerar det bra men med Android tväsrstopp. Kör vi med den föregående appen på vårt testsystem fungerar det som det ska.
    Vi kan också placera appen i molnet och då fungerar Androidappen som den ska.
    Jag har ett litet enkelt testprogram som beskriver lite av problemet.


    document.addEventListener('deviceready', onDeviceReady, false);

    function onDeviceReady() {
    // Cordova is now initialized.
    alert ("running")
    //url ="https://axity.dogood.se/subtitle/getplaylist"
    //url ="http://10.0.0.2:8080/subtitle/getplaylist"
    checkServerConnection(url)

    async function checkServerConnection(url)
    {
    try {
    alert ("checkserver " + url)
    let myObject = await fetch(url);
    let myText = await myObject.text();
    message_received(myText);
    }
    catch (exceptionVar){
    alert ("error="+exceptionVar)
    }
    }
    function message_received(Received_text)
    {
    alert ("message_received"+Received_text)
    }

    När jag använder den första URLen fungerar allt som det ska och jag får ner en json sträng.

    Med den andra, alltså där servern är på det lokala nät som telefonen är ansluten till, får jag exception error. "Failed to fetch"

    Problemet beror alltså troligen på den uppgradering som gjorts i Android. Möjligen behövs nån ny permission eller liknande,

    Alla goda förslag mottages. Har någon en lösning så eller riktigt bra ide så ....

    Med vänlig hälsning,

    Per
     
  2. Buzz

    Buzz Android Apprentice Medlem

    Blev medlem:
    14 maj 2010
    Inlägg:
    4 650
    Mottagna gillanden:
    2 012

    MINA ENHETER

    Heleg gillar detta.
  3. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 392
    Mottagna gillanden:
    2 132

    MINA ENHETER

  4. peli44

    peli44 Infant Droid Medlem

    Blev medlem:
    5 jun 2017
    Inlägg:
    9
    Mottagna gillanden:
    0
    Tror inte att det är krypteringen. Normalt har vi hela tiden kört okrypterat på LAN och det har fungerat bra,. Men när vi flyttar ut servern i molnet kör vi krypterat.
    Nej ändringen ligger nån annan stans i någon Permission eller liknande som de infört i senare versioner av Android
     
  5. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 392
    Mottagna gillanden:
    2 132

    MINA ENHETER

    Vad säger stacktracen?

    Vilken targetSdk körde ni tidigare?
     
  6. peli44

    peli44 Infant Droid Medlem

    Blev medlem:
    5 jun 2017
    Inlägg:
    9
    Mottagna gillanden:
    0
    jag har ingen stacktrace ser bara att jag i appen inte får kontakt med servern.
    Vi körde nog 28 innan. Nu har vi för att kunna ladda upp till Google blivit tvugna att köra SDK 30.
     
  7. peli44

    peli44 Infant Droid Medlem

    Blev medlem:
    5 jun 2017
    Inlägg:
    9
    Mottagna gillanden:
    0
  8. peli44

    peli44 Infant Droid Medlem

    Blev medlem:
    5 jun 2017
    Inlägg:
    9
    Mottagna gillanden:
    0
    Hur gör jag för att aktivt säga att jag godkänner http?

    Tyvärr får jag ingen exception bara svarat att jag inte får kontakt.
     
  9. Heleg

    Heleg Professional Droid Medlem

    Blev medlem:
    5 feb 2016
    Inlägg:
    2 962
    Mottagna gillanden:
    2 091
    Kan du inte istället göra om det till https:// med ex.vis Let's Encrypt? Då får du en säker anslutning och kan utesluta det problemet?
     
  10. peli44

    peli44 Infant Droid Medlem

    Blev medlem:
    5 jun 2017
    Inlägg:
    9
    Mottagna gillanden:
    0
    Vi har kört på det här sättet under många år. Https när applikationen ligger i molnet och http när den ligger på det LAN som telefonerna är anslutna till via WiFi. På det testsystem jag har fungerar den nuvarande android appen men inte den jag nu håller på att vidareutveckla. Däremot fungerar IOS appen med alla de som förändringar vi infört. Skillnaden för android är att jag i Andropid studio har behövt uppgradera från SDK 28 till SDK 30. Ett krav från google för att man ska kunna publicera android appen.
     
  11. Zooklubba

    Zooklubba Android Medlem

    Blev medlem:
    10 jul 2010
    Inlägg:
    6 392
    Mottagna gillanden:
    2 132

    MINA ENHETER

    Är du helt säker att ni har gått från targetSDK 28 till 30 och inte från 27?

    ClearText (http) blev disabled by default med SDK 28. I en vanlig app behöver du lägga till (som jag länkade tidigare) en xml-fil inuti appen. Hur det fungerar med Cordova vet jag dessvärre inte. Men verkar relativt enkelt:
    How Cordova support Network Security Config introduced by Android 7.0?

    För att logga native exceptionet (som säkert skulle ge er mer information nästa gång något kraschar):
    cordova-plugin-native-logs
    How to catch native exceptions in Cordova?
    (Obs, har givetvis inte testat något av dessa då jag inte jobbar med Cordova-appar).

    Testa att få till https, det går att fixa gratis med hjälp av Cloudflare/DuckDNS + LetsEncrypt så ni får ett giltligt HTTPS-certifikat. Jag står kvar på min killgissning om http/https och security config.
     
  12. maosk21

    maosk21 Kid Droid Medlem

    Blev medlem:
    2 sept 2015
    Inlägg:
    39
    Mottagna gillanden:
    22

    MINA ENHETER

    Som ovan, minns inte varför & när men har ett minne av att jag var tvungen att ändra all min trafik till https för en tid sedan.
     
  13. Heleg

    Heleg Professional Droid Medlem

    Blev medlem:
    5 feb 2016
    Inlägg:
    2 962
    Mottagna gillanden:
    2 091
    Många API-er (exempelvis Googles) kräver att man anropar från en https-adress, kanske därför...