Watch kit / Fehler / mywebview / anfänger

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Watch kit / Fehler / mywebview / anfänger

    Hallo Leute, ich komme leider nicht alleine weiter, ich habe mir eine App erstellt die bei Betätigung eines Buttons ein Symbol zb. "$1" an eine voreingestellte IP Adresse schickt. ( was auch funktioniert )

    --> jetzt wollte ich meine Apple Watch mit einbinden, dass ich auch über die Watch das ganze fernsteuern kann.

    Ich bin eigentlich mehr der Elektronik Freak aber es ist schön per iPhone einiges fernzusteuern. Leider habe ich fast keine Kenntnisse im Bereich von Xcode und dergleichen.

    Ich bin auch schon seit einem Jahr auf der Suche nach einer Möglichkeit in einer App etwas zu visualisieren ( nichts aufwendiges ) "einfach gesagt" ich warte bis von der voreingestellten ip Adresse ein bestimmtes Zeichen ankommt und dementsprechend soll sich ein Indikator zb. von "rot" auf "grün" ändern. Meine App steuert ja etwas fern aber ich weis nicht wie ich eine Rückmeldung mit einbinden kann.
    Leider habe ich so etwas noch nie in einem Tutorial oder Blog gesehen. Da ich mich nicht wirklich gut auskenne komme ich auch dort leider nicht weiter.


    Noch ein paar Infos:

    Ich habe einen Apple Entwickler ACC für iOS
    Ich will die App nicht anbieten soll nur für Eigengebrauch sein von daher muss diese nicht absolut perfekt sein ;)

    Ich würde mich sehr freuen wenn mir jemand weiterhelfen könnte da ich jetzt schon über 1 Jahr auf der Suche nach einer Lösung bin.

    Im Anhang ein paar Screenshots

    Vielen Dank
    bild1.pngbild2.pngbild3.pngbild4.png
    Dateien
    • bild5.png

      (273,8 kB, 387 mal heruntergeladen, zuletzt: )
  • Dein Ansatz hinterlässt bei mir massig Fragezeichen, unter anderem dieses: Warum verwendest Du eine UIWebView, wenn Du eigentlich nur einen NSURLRequest ansetzen möchtest? Was erwartest Du von dem Webserver für einen Response, dass er als WebPage angezeigt werden kann? Solltest Du nicht tatsächlich den HTTP-Response irgendwie verarbeiten / vergleichen?

    Dein Problem ist m. E. weniger das WatchKit, als der grundsätzliche Einstieg in die iOS-Programmierung. Sorry, wenn es gebetsmühlenartig wirkt, aber Du solltest Dich vielleicht etwas strukturierter Deiner Aufgabenstellung nähern: Was willst Du realisieren, welche UI-Elemente gibt es dafür etc. Vielleicht reicht erst einmal eine UIView mit einem Button (zum Schicken) und einem Label (für die Rückmeldung). Dann nach Betätigung das Buttons einfach (ohne HTTP-Request) das Label ändern. Wenn das klappt, würde ich den Request und die Auswertung des Responses einbauen. Dann erst versuchen, eine App für die Watch anzugehen. Immer einen Schritt nach den anderen und erst eine Baustelle abschliessen bevor man die nächste beginnt ... sonst verlierst Du als Anfänger schnell den Überblick.

    Das Ganze sollte sich mit Hilfe von einführender Literatur relativ einfach bewerkstelligen lassen :)

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Hey Mattes

    Vielen Dank für deine Antwort :)

    Mein Problem ist das es zwar jede Menge BSP für Buttons , Texte Spiele usw. gibt aber nicht für einen HTTP request oder für einen Indikator :/

    Mir würde es unglaublich helfen wenn ich ein BSP hätte für einmal :

    1 Button der beim betätigen zb an 192.168.2.1 ein "$1" schickt.

    & einmal ein Beispiel für:

    1 Indikator der falls über den port sagen wir 85 ein $1 kommt grün wird und bei $0 rot.


    Dann würde ich die zusammenhänge verstehen und mich besser einarbeiten können.


    Aktuell sieht es ja so aus das ich vor ca 1 Jahr ein BSP gesehen habe für was mit ner Ip Adresse und dann meinen " schrecklichen" code da gebastelt habe ohne zu wissen was eigentlich was macht :/ es ging zwar aber das ist ja nicht das gelbe vom ei.


    Literatur wär auch zusätzlich nicht schlecht aber was könntest du mir da empfehlen mir geht es ja in "nur" um Buttons Indikatoren evtl wann mal slider die einfach nur über( http request ) etwas senden oder ihren status davon abhängig ändern.

    Ich hoffe du könntest mir da noch ein bisschen im Detail helfen ich wäre dir sehr dankbar :)

    Gruß Marc
  • Immer der Reihe nach:
    1. Für den von mir genannten ersten Schritt (Touch auf Button ändert Status-Feld) dürftest Du problemlos Beispiele finden: Fast jede in iOS-Programmierung einführende Leküre dürfte so beginnen.
    2. Zum Absetzen eines HTTP-Requests an eine IP-Adresse lautet das Stichwort NSURLRequest, wozu es ebenfalls massenhaft Beispielcode gibt.
    3. Die "Rückmeldung" (Dein Indikator) klingt so, als würdest Du etwas an Dein iPhone schicken wollen. Hierzu müsstest Du einen Server-Prozess programmieren und permanent aktiv haben ... m. W. auf einem iPhone eher illusorisch. Liefert Dein angesteuertes Gerät nicht nach Erhalt des HTTP-Requests einen sinnvollen Status zurück?
    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • zu 1.) ja das ist klar das bekomme ich hin.

    zu 2.) Ja es gibt da Beispiele aber das problem ist das diese jede menge code enthalten der normal für so eine winzige Funktion die ich ja nur benötige unnötig ist und es ist sehr verwirrend als blutiger Anfänger ;)

    zu 3.) hab mich da etwas unpraktisch ausgedrückt , ich schicke über den Button zb. ein "$1" und dann könnte ich das ( im microcontroller so programmieren ) das dieser direkt nach erhalten des Befehls ("$1") ein zb OK etc. zurück schickt aber wie werte ich dann das im xcode aus um zb die Farbe eines Indikators zu ändern ?

    zusatz: das mywebview habe ich nur da es damals in dem BSP war ich wüsste aber nicht für was ich das überhaupt brauche denn ich will ja keine webweite anzeigen sondern nur buttons und Indikatoren ?!


    Gruß Mac
  • webview ist da komplett das falsche.

    schau dir mal NSData oder NSString an.
    dort gibs methoden um einfach von url zu laden. synchron, ohne spezielle options etc.
    aber damit kannst ja mal klein anfangen. dann kannst du das ganze auch asynchron machen (die daten werden dann weiterhin gleich verarbeitet).
  • Marc2014 schrieb:

    zu 2.) Ja es gibt da Beispiele aber das problem ist das diese jede menge code enthalten der normal für so eine winzige Funktion die ich ja nur benötige unnötig ist und es ist sehr verwirrend als blutiger Anfänger ;)

    zu 3.) hab mich da etwas unpraktisch ausgedrückt , ich schicke über den Button zb. ein "$1" und dann könnte ich das ( im microcontroller so programmieren ) das dieser direkt nach erhalten des Befehls ("$1") ein zb OK etc. zurück schickt aber wie werte ich dann das im xcode aus um zb die Farbe eines Indikators zu ändern
    Naja, Wenn Du Dir mal die Klassen-Dokumentation zu NSURLRequest anschaust, wird dort das Protokoll genannt, welches Du zum Reagieren auf empfangene Daten nutzen kannst: NSURLConnectionDataDelegate. Und mit diesen beiden Begriffen und Google kommt man leicht auf z. B. dieses Tutorial, welches direkt ein Beispiel beinhaltet, wie man einen HTTP-Request absetzen und (asynchron) dessen Antwort verarbeiten kann.

    Wenn Du nun Deinem Mikrocontroller beibringst, auf entsprechende Requests direkt ein "OK" o. ä. zu senden, hast Du doch schon die halbe Miete. Wenn der erste Punkt für Dich kein Problem darstellt, kannst Du dann (nach Erhalt eines "OK") doch das Statusfeld passend aktualisieren.

    Du missbrauchst die WebView nur, um einen Request abzusetzen, das verwirrt mehr als das es hilft. Ich würde mir o. g. Vorgehen auf der grünen Wiese neu anfangen.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Vielen Dank euch beiden ;)

    Ich habe es jetzt so gemacht wie auf dem Bildern im Anhang zu sehen. Es funktioniert soweit mit dem senden von dem iPhone und es kommt auch perfekt am microcontroller an ;)

    Jetzt hab ich das versucht für die Apple Watch zu machen allerdings mache ich da etwas falsch oder evtl auch umständlich?! ( siehe Bild) da kommt eine Fehlermeldung mit der ich nichts anfangen kann.

    Muss ich zb. den button und die Action dafür jeweils für die iPhone app und die watch app schreiben oder kann man nicht einfach einen button von der watchapp mit der Action der iPhone app verknüpfen ?!

    Gruß Marc
    Dateien
    • bild 1..png

      (237,66 kB, 342 mal heruntergeladen, zuletzt: )
    • bild 2..png

      (183,18 kB, 360 mal heruntergeladen, zuletzt: )
  • das ist blödsinn was du da machst denn du öffnest quasi einen browser der dann die seite laden soll.
    dass das auf der watch nicht geht ist ja klar.

    warum zum teufel schaust du dir nicht die genannten methoden in NSData oder NSString an? das sind alles nur einzeiler und du bekommst auch gleich das resultat zurückgelifert!
  • ok, ja dachte mir das ich da einiges unsinnig und falsch mache ;/

    ich finde kein 1 Zeilen bsp nur bsp mit großem code den ich nicht überblicken kann :(


    das bsp. oben von mattes ist ja auch mehrzeilig und groß :/


    könntet ihr mir 1 bsp für die watch zeigen dann klappt das bestimmt das mit der iPhone app hab ich jetzt ja verstanden und geht :) danke

    Grus marc
  • Marc2014 schrieb:


    das bsp. oben von mattes ist ja auch mehrzeilig und groß :/
    [...]
    könntet ihr mir 1 bsp für die watch zeigen dann klappt das bestimmt das mit der iPhone app hab ich jetzt ja verstanden und geht :) danke
    Hi Marc,

    das von mir verlinkte Bespiel besteht aus fünf Delegate-Methoden mit je einer Zeile und einem zweizeiligen Aufruf. Wenn Dir das zu komplex ist, wird es schwierig ... und nein, ich habe nicht den Eindruck, dass Du die iPhone App verstanden hast: Den HTTP-Request über einen Browser-Aufruf zu senden ist ja noch mehr Overkill als die ursprüngliche WebView ... Höre doch einfach auf die Ratschläge, die gritsch und ich Dir geben.

    Mattes
    Diese Seite bleibt aus technischen Gründen unbedruckt.
  • Vielen Dank euch beiden für die Hilfe :) und sorry das es so schwierig mit mir ist.


    Wenn man sich nicht so auskennt ist das erstmal nicht ohne ;(

    ////////////////

    Ich hoffe dieses Mal habe ich es besser gemacht :D

    schaut euch mal die Bilder im Anhang an ;)

    Also Stand der Dinge:

    Funktion OK

    Watchapp geht.
    Daten werden übermittelt.
    Mikrocontroller führt den Befehl aus.
    Keine Fehlermeldungen werden angezeigt.

    Fehler

    teilweise starke Zeitliche Verzögerung vom senden zum ausführen.
    teilweise bei 1 mal Button drücken mehrmalige Ausführung des Befehls.
    Bilder für die App erscheinen nicht auf der Uhr. ( siehe Anhang ).

    ////////////////////

    Allerdings bin ich immer noch ratlos, wie ich die empfangenen Daten ( Antwort ) auswerte?!


    Gruß Marc
    Dateien
    • bild1...png

      (278,93 kB, 345 mal heruntergeladen, zuletzt: )
    • bild2...png

      (230,71 kB, 360 mal heruntergeladen, zuletzt: )