[Musik]
Hey Siri, schalt das Licht an.
Tut mir leid, das habe ich leider nicht verstanden.
Ja, so geht es uns allen, aber auch nicht, wenn wir das alles richtig machen, wie wir hier lernen.
Im App Store Tagebuch, hier lernt man nämlich, wie man Apps schreibt, hoffentlich.
Ja, durchaus, oder man kriegt Tipps und Tricks für alles rund um die Appentwicklung.
Auf der iOS, MacOS, iPadOS und WatchOS und...
TVOS dann, ne?
TVOS, auch nicht, aber wir werden vielleicht auch ROS irgendwann, das RealityOS, wo wir letztens schon übergelegt haben.
Ich bin gespannt, so VR Sachen hätte ich ja schon mal Bock, was zu entwickeln.
Ja, einfach Job inschmeißen und...
Ja, vielleicht kann ich das sogar in meinem Job entwickeln, bald.
Kann ich meinen kleinen Schwank aus meiner Jugend.
Vor 5 Jahren ungefähr habe ich einen noch in Frankreich gefunden, und da haben wir tatsächlich in VR Flugzeuge designt.
Teilweise, das war ganz cool, mit so einer Oculus Rift und so.
Aber kannst du deine iPhone Entwicklung in der Arbeit machen?
Ne, aber wir haben ja diese Microsoft HoloLens-Dinger, damit könnte man was machen.
Da hätte ich auch ein Wunder, einen Einzelpfann selber für mich zu bekommen am Schreibtisch.
Ja, hatten wir glaube ich letztes Mal darüber geredet. Also generell über die VR-Geschichte und so.
Ja, fangen wir mal noch nicht heute mit den News an, sondern mit der Idee.
Die Idee, aber auch...
Nein, die Idee, bis uns das nächste Mal wieder was einfällt.
Und zwar kam mir irgendwie so die Idee, es gibt ja auf Reddit, da gibt es so diesen Subreddit, da ist Roastnly.
Und da kann man irgendwie ein Bild von sich reinstellen und Leute...
Machen einen fertig.
Machen einen fertig halt irgendwie.
Aber auch humoristisch.
Genau, humoristisch und machen halt einen irgendwie zersau und ist halt irgendwie humoristisch gemeint und so weiter.
Und man muss halt auch rechnen, wenn man sein Bild reinstellt, dann muss man das auch abkönnen.
Ich glaube, das versteht jeder in dem Subreddit.
Und wir haben uns eigentlich überlegt, nachdem wir ja auch mal Nikolas seine App uns angeguckt haben und uns angehört haben, was er mit seinen Tracks macht, warum wir nicht einfach mal irgendwie so eine Kategorie bei uns machen.
Wie heißt RoastmyApp?
Also sieht folgemaßen aus, du, du Hörer, hast eine App irgendwo im Editor oder auf der Slide.
Das sind zu Voraussetzungen, dass wir sie auch möglichst einfach herunterladen können.
Und wir gucken uns das mal an und geben dir Feedback dazu.
Also siehst du irgendwie als, keine Ahnung, als Feedback Loop, mit dem du dann was anstellen kannst und als vielleicht kostenlose Werbung.
Und wir wollen auch nichts dafür.
Du musst halt davon ausgehen, dass wir entweder was Positives oder vielleicht auch was Negatives sagen.
Genau.
Wenn die Farben schrecklich sind, dann werden wir das so sagen.
Genau. Und wir eröffnen das jetzt damit und schicken uns einfach an den Link.
Wir schauen uns das gerne an.
Entweder App Store oder Testfly, so dass wir da die auch testen können.
Also nicht nur irgendwie einen Blog posten mit zwei, drei Bildern.
Genau. Und dann roasten wir dich.
Genau. Wir sind auf die Einsendung gespannt.
Genau. Und die Kategorie gibt es dann auch, wenn es erst eine Einsendung gibt.
Also wir werden sehen, wann die erste kommt.
Genau. Aber kommen wir doch danach jetzt zu den News.
Ja.
Die News. Ach so, du schließt den Ball zu mir.
Und da habe ich auch reingeschrieben, dass Zoom, auch ein Entwickler im App Store, wird besser behandelt als andere Entwickler.
Ja, aber Apple sagt doch immer, Apple sagt doch, alle Entwickler sind gleich.
Aber alle sind halt gleich.
Aber das ist ja nicht nur bei Zoom so, sondern wie auch andere Entwickler.
Ich glaube, wenn man groß genug ist, dann kann man bei Apple den guten Dreh rausholen.
Ja. Und man bekommt auch Zugang zu APIs, die sonst keiner bekommt, so wie bei Zoom.
Folgendermaßen auf dem iPad gibt es ja sowas wie den Split-Screen-Modus.
Und der Split-Screen-Modus ist so konzipiert, sobald du einen Kameras-Stream hast, der irgendwie Video nach,
halt während du im Split-Screen wirst, Video wird dann geblockt anscheinend.
Die Kamera wird dann geblockt.
Heißt, du kannst deine Zoom-Kontrolle, deine Zoom-Konferenz nicht mit deinem XY-Dokument im Split-Screen-Modus machen,
ohne dass die Konferenz oder dein Video mit abgebockt wird.
Du kannst nicht mit dem beiden Tizen machen auf dem iPad.
Genau. Und da hat Zoom einen Enttitel mitbekommen, was nicht dokumentiert ist.
Was keiner weiß, wie sie es bekommen haben.
Sie haben es bekommen, weil man natürlich mit Apple irgendwie geredet hat.
Und ja, sie können auf jeden Fall Video-Konferenzen machen im Split-Screen-Modus.
Und andere Apps können das nicht.
Und ich bezweifle auch, wenn ich oder du oder irgendwer anderes kleiner Entwickler daherkommt und sagt,
ich kann auch für meine App, weil ich habe das und das und das. Mag sein, dass man mit einer guten Erklärung auf diesen Enttitel mitkommt.
Aber es ist halt einfach nicht so, wie man überhaupt so wird als Entwickler.
Also wer jetzt eine Kamera-App, die heißt Web-Konferenz-App hat, der sollte mal Apple schreiben.
Ja, zur Verteidigung, ja, das ist eher schon ein Projekt für eine Firma und nicht für einen kleinen Entwickler.
Aber das war es auch schon zu dem Thema. Heuer kennst du die Reface-App?
Also ich kenne die App, wo man Gesichter austauschen kann in Videos und Fotos und so was.
Die Reface-App ist eigentlich so ein Tool, so dieses Deepfake-mäßige, du machst ein Foto von dir und es wird in ein Video reingestitcht.
Also auf jedes Frame und es sieht sehr, sehr gut aus.
Und da wollte ich eigentlich nur mal darüber reden, weil ich finde es eigentlich ganz cool,
sie haben ihr Geschäftsmodell sehr gut implementiert, finde ich.
Also meine Experience mit der App war, du kommst in die App rein und wirst erstmal so, hey, du kannst erstmal ein Abo machen.
Und nachdem ist, hm, das ist schon wieder doof. Und du kannst halt auch wegklicken.
Und dann hat die App genauso funktioniert, erst mal kannst du alles machen.
Und dann kam auch noch mal Werbung. Und dann kam auch noch mal, hey, wir wollen dich tracken.
Und dann, hm, sie haben wirklich, du musst natürlich dann, wenn du nicht das Abo machst, was einigermaßen fair war, ich glaube 4-5 Euro im Monat, musst du dir ansonsten vor jedem Video generieren.
Also du kannst im Moment dein Gesicht reinschneiden und sagst dann jetzt generieren das Video.
Dann musst du dir irgendwie so einen 30-Sekunden-Clip angucken oder musst du nicht angucken, kannst du noch eine Zeit wegklicken.
Einerseits, also ich finde es auf jeden Fall in Ordnung gemacht.
Du kannst die App bei den Folgen nutzen und du kannst dir halt wirklich aussuchen, was du mal haben willst und wie du es benutzen willst.
Und so fand ich es eigentlich mit am besten. Also sie geben dir upfront irgendwie so die Möglichkeit, hey, bezahme mal dafür.
Kannst wegklicken. Gut, dann werden wir dich mit der Werbung voll und machst uns halt damit die Taschen.
Oder bezahlst du 2,50 Euro in der Woche oder 4 Euro im Monat oder 25 Euro im Jahr?
Gut, es ist jetzt halt eine sehr, sag mal, Spielerei-App, wo man jetzt nicht unbedingt jeden Tag damit intergiert.
Kommt aber, ich weiß es nicht, also ich nicht. Aber mag sein, dass da Leute, die da mehr mit rumhantieren und jeden Tag irgendwo in dollars-deutschen Networt irgendwas hochladen.
Ja, wenn du so ein TikTok-Star bist und dann damit dein Geld verdienst, dann nutzt dich diese 25 Euro vielleicht.
Vielleicht, vielleicht. Ja, man macht auch bestimmt den, den, den das gemacht hat. Ich hab's nicht gemacht, aber dadurch hab ich auch erst das gesamte Geschäftsmodell kennengelernt.
Also das Geschäftsmodell ist, du erlaubst dir kostenlos, aber ballerst Werbung rein.
Ja, ja, du, wie ich sag, mit meiner NFC-App auch mal.
Ja.
Bist du denn schon auf den neuesten iOS-Update?
Ja, tatsächlich bin ich. Ich hab jetzt erst mal meine Geräte geupdatet.
Ja, hast du denn, wie oft benutzt du denn den Simulator? Nichts gut.
Schon relativ häufig. Also, wenn ich, wenn ich, das weiß ich.
Dann hast du bestimmt schon mal einen Screenshot damit gemacht.
Ja, ja, immer. Also auf jeden Fall. Und so was mach ich, den Screenshots mit.
Okay, hast du denn schon mal ein Video damit gemacht?
Nee.
Nee, das geht nämlich jetzt nicht. Aber, aber.
Also man kennt ja vielleicht diese neue Simulator, die man hat, die weißen Bezel und oben so ein Ding, wo man Screenshots sonst irgendwas und weiß nicht welche Knöpfe, verschiedene Knöpfe.
Und dann hält man, Apple, smart wie immer, die Option-Taste und dann kriegt man eine Option dafür, dass du ein Video aufnehmen kannst.
Und auch der Mauszeiger wird im Video nicht gezeigt.
Das heißt, du siehst das Video so wie, als wenn du so ein Video machen willst.
Ja, und noch eine geile Funktion der ist, du kannst es nicht nur als Video speichern, sondern auch als GIF.
Okay.
Das heißt, du kannst natürlich irgendwie ein Feature, was eh nur irgendwie zwei, drei Sekunden irgendwie vielleicht ein Video ist, als GIF rauskristallisieren und in dein Social Network oder wie auch immer du senden willst, hochladen und deinen GIF präsentieren.
Du kannst auch als normales Video exportieren und dann das für die App Store vorschauen oder zum nutzen.
Das habe ich jetzt noch nicht probiert.
Ich weiß ja früher waren diese Video-Previews irgendwie so ein Feature in iMovie drin und ganz genau gemacht.
Ja, wirklich, du musstest in iMovie dann App-Preview auswählen und nicht schön.
Hab's jetzt noch nicht ausprobiert, es kann sein, dass es die richtigen Maße hat.
Das war ja immer das Problem, dass du genau die richtige Pixellänge und Breite haben musst, damit dir der App Store das Video annimmt und nicht ablehnt.
Hab ich jetzt noch nicht ausprobiert, kann sein, dass das passt.
Okay. Hast du schon das Video hochgeladen?
Ich habe das mal gemacht, wurde dann aber abgelehnt, weil man darf keine Hände oder Person oder so zeigen.
Das muss ein Device-Video sein, wo es aber auch immer wieder andere Entwickler besser waren.
Ich glaube, wenn das sehr hochglanzpolierte Videos sind, die wirklich mit Models gemacht werden und sonst wo das dann irgendwie klar ist,
das ist jetzt nicht irgendwie von 0815 Entwickler gemacht, dann nehmen wir das an.
Ansonsten steht aber auch in dem Guidelines drin keine Hände, keine Person, sondern zeigt eine App.
Klar gibt es Apps, die mit der Interaktion von Leuten funktionieren und man auch Personen zeigen muss.
Ist halt schwierig bei mir, was ich vor der Apple Watch und iPhone in einem Video zeigen.
Hätte ich irgendwas Komplexes bauen müssen und dann habe ich mir gedacht, okay, probierst du es mal mit, zeigst du an und das Handy und versuchst es einigermaßen gut aufzunehmen.
Na ja, abgelehnt.
Dann kommen wir jetzt auch schon zu unserer Begrüßung, wo ich gesagt habe, oder wo du mich gefragt hast, hey, sieh, nein, stopp.
Sorry fürs Triggern. Hey, Dollar, heimcomputer.
Der HomePod Mini hat bei mir, ich habe mich erst kurz gefreut, hey, 14.5 ist da, mein HomePod gleich update runtergeladen, geguckt, sind meine HomeKit-Probleme weg und denke mir so, was lief?
So bei meinen Bluetooth HomeKit-Geräten haben wir auf einmal funktioniert, meine Oscar-Lightstrips und mein Elgato Eve Thermostat haben wir auf einmal sofort funktioniert und denke, endlich ist der Bug weg, dass die Geräte sofort reagieren.
Am nächsten Tag wieder probiert, ne, na, ja, Computer, tut mir leid, deine Geräte regeln nicht.
Das soll jetzt anscheinend mit 14.6 betrugen sein, also auch mit der aktuellen Beta.
Ich habe es noch nicht probiert, haben die verlinkt, ich werde es, glaube ich, sogar mit 14.6 runterladen und das ausprobieren, weil es nervt mich unglaublich.
Aber das ist dann 14.6 auf dem iPhone, das ist nicht auf dem HomePod.
Ja, ja, du musst auf dem iPhone das runterladen und dann musst du die Home-App aufmachen und dann gehst du auf meine Zuhause-Einstellungen und dann siehst du irgendwo den HomePod und dann kannst du da sagen, hey Steuerzentrale und dann kannst du da irgendwie sagen, okay, ist auch ein bisschen seltsam alles.
Also ich weiß nicht, wie man ein HomePod update hat, wenn man kein iPhone hat, anscheinend gar nicht.
Kann man mit so einem HomePod den Film machen, wenn man kein iPhone hat?
Kannst du mal Musik machen, also kannst du ein Radio anlassen.
Tolles Radio.
Na gut, gibt es noch da.
Auf jeden Fall, hoffentlich ist das beruflich, würde mich riesig freuen, weil das Smartphone ist cool, wenn es funktioniert und umso frustrierend, wenn es nicht funktioniert.
Und Siri platt hat immer ein bisschen viel und dann musst du dir sieben Sekunden, hast du mir leid, dass es nicht funktioniert.
Guck mal deine Home-App nachdenken.
Ich benutze die Home-App tatsächlich ganz selten nur mit Siri.
Ich mach das fast alles über die Home-App oder über irgendwelche Shotcats auf dem iPhone in der Control Center.
Ja, verstehe ich, habe ich anfangs auch, seitdem ich den HomePod habe, weiß ich nicht mehr, oder ich habe es auch mit der Apple Watch gemacht, aber mit dem HomePod ist es einfach wirklich, wenn es funktioniert, extrem schön.
Und dann habe ich wirklich einen Response-Time von, na eine Sekunde vielleicht, also hier mache ich an, tackelig, es geht wirklich zügig und du bist halt einfach, du bist halt, also dieses Handy raus holen, Control Center runter, tipp, tipp, tipp, tipp.
Aber eigentlich würde man ja das alles automatisch passieren. Ich habe das bei mir so eingestellt, dass wenn ich einen Fernseher anmache, so ein LG-Fernseher, der aber, so die Apple, der hat, wer ist das denn? Airplay mit drin.
Und der erscheint auch tatsächlich in der Home-App und jetzt kann ich da eine Automatisierung einlegen, das heißt, wenn ich einen Fernseher nachmittags anmache, geht ein Rollladen runter, denn sonst, das Fenster sieht man sonst im Fernseher.
Das klappt alles ganz gut, also wenn ich einen Fernseher anmache und es ist nach 14 Uhr, geht der Rolladender runter.
Okay, cool.
Also, kann man halt auch noch mehr machen, außer so manuelle Sachen steuern, das finde ich ein, diese ganze Automatisierung.
Also die Automatisierung ist das beste, aber du kannst halt nicht alles automatisieren und dann ist halt wirklich Sprache das Natürlichste. Also da macht es dir halt auch wirklich Sinn, wenn es halt simple commands ist, wie "Mach mir bitte Gerät A/B an", weil woher soll jetzt eine Automatisierung wissen, dass du, ich habe meine Mikrowelle an der Steckdose, die Steckdose, mach mir die Mikrowelle an.
Ich würde sie auch sonst nicht anlassen, aber ich mag einfach nicht, dass diese Mikrowelle den ganzen Tag rumleuchtet mit dieser blöden Uhr, die ich sowieso nicht angucke.
Ja, das soll auch nicht fixern und damit kommen wir jetzt noch zu einem kleinen Update persönlich, ja doch, irgendwie so.
Und zwar habe ich gestern ein Update für meine NFC für iPhone rausgekommen und zwar habe ich einen QR-Code wieder eingebaut.
Was?
NFC und jetzt QR?
Ja, einerseits macht es Sinn, irgendwie eine universelle E-Reader-App zu haben.
Also mir kam, mir wurde jetzt zugetragen über Twitter, so hey, die Corona-Warn-App kann irgendwie QR-Codes rausgeben und Leute aus dem Internet haben versucht dann diesen QR-Code auszulesen, Link kopieren, auf NFC-Tech kopieren, dann kann man sich genauso diese Check-Ins mit der Corona-Warn-App ausführen.
Das heißt, du musst nicht mehr QR-Codes scannen, sondern kannst einfach dein Handy halten und bekommst die Banner und dann tippst du drauf und dann kannst du bei der Corona-Warn-App einchecken.
Dieses, diese Demo hat ein Twitterer gemacht, mit der Konkurrenz-App.
Und das habe ich natürlich nicht auf dem Sitzen, das habe ich gesagt, das kann ich besser, weil der hat natürlich irgendwie Link ausgelesen, Copy-Paste in die App rein, Tech beschrieben.
Dann habe ich gesagt, ich baue jetzt einen QR-Code, der weiß, der NFC-Ende ist nicht ganz automatisch, aber so halb automatisch, aber das sind schon mal die Daten, die aus dem QR kommen, dir zum Schreiben vorbereitet.
Dann hast du sozusagen zwei Klicks, einmal sagst du, scann und dann sagst du, bitte schreiben.
Das sind drei Klicks.
Auf jeden Fall läuft das eingebaut und da war ich auch sehr erstaunt, das hat nicht mal eine halbe Stunde gedauert und da war schon der Review dran und habe mir gleich einen Update gegeben.
Weil er anscheinend meinen App-Tracking-Transparency-Popup nicht gefunden hat, wo ich dann selber erst kurz stutzig war.
Und dann habe ich nochmal ein bisschen was verändert und habe es nochmal nachgeregt, habe mir nochmal Texte zugeschrieben, dann ist es durchgegangen.
Ja, seid heute online und kann man sich jetzt auch auslesen und sie direkt.
HTTP und HTTPS links oder irgendwie anderen, aber noch andere Datentypen kommen noch, momentan noch nicht implementiert, aber der Basic-Fall oder der Fall der von Leuten, die sich mit dem QR-Code und der Corona-Warn-App beschäftigen, deckt es diesen Fall an.
Kannst du das irgendwo, hast du das irgendwo da dann auch stehen, dass das für diesen Corona-Warn-App-Fall gedacht ist?
Oder nicht, weil ich weiß, dass man bei Apple einige Sachen ablehnt, wenn der Corona-App kommt, ne?
Ne, ne, ne, hab ich nicht reingeschrieben.
Ist ja auch, Corona-Warn-App ist jetzt völlig unabhängig davon.
Jetzt freue ich mich auf den QR-Code, ich hab den wieder ganz installiert, also, geupdatet.
Ja, du kannst ja aus der Corona-Warn-App, kannst du dir ja den Test-Event erstellen, so ein privates Event, kriegst du den QR-Code, den kriegst du auch als druckbares PDF und das PDF kannst du dann auch hier in den Drucker kaufen.
Du kannst es auch per AirDrop an deinen Rechner schicken, dann machst du es am Rechner auf und dann ist es da.
Also relativ, relativ simples Feature, hab ich innerhalb von vier Stunden implementiert, funktioniert schon ganz gut.
Ja, das war's eigentlich dazu. Freut mich und die Leute, die sich damit beschäftigt haben, haben sich gefreut.
Vielen Dank nochmal an Twitterer Grasdackel, falls er hier zuhört, hab ich auch in die Update rausgeschrieben für den Hinweis.
Danke Grasdackel.
Ja, macht auf jeden Fall Sinn.
Kommen wir zu unserem Thema, oder?
Und, genau, jetzt kommen wir mal nach dem ganzen Gelaber hier auf das eigene.
Genau, wir wollen heute darüber reden, wie man Daten bekommt in seiner App, die man anzeigen kann, von, aus dem Internet quasi.
Und zwar werden Daten häufig über irgendwelche sogenannten APIs zur Verfügung gestellt.
Oder was ist denn eine API?
Advanced Programming Interface, keine Ahnung.
Ne, das ist so ein Verschmuss, ein Advanced Programming Interface.
Genau, also ein Interface, muss ja nicht nur auf dem Internet sein, es kann ja auch auf dem Rechner sein, das sind ja verschiedene Programme oder Programnteile miteinander reden können.
Das ist fest definiert in der Regel, dann gibt es sogenannte Endpoints, also wir reden jetzt hauptsächlich über REST APIs.
Ja, ich glaube auch, das wird gut.
Die haben sich ja so eingebürgert und die sind so, dass du halt eine URL, eine Nachricht schickst und sagst, hey, ich hätte gerne ein paar Daten und dann kriegst du halt eine Antwort zurück.
Da kann man sich sehr rein nerden, wenn man sich die ganzen HTTP-Request funktioniert, durchliest, aber eigentlich ist das so, es gibt halt einen Endpunkt dieser URL, der kann man dann einen HTTP-Header mit schicken, da sind normalerweise so Authentifizierungs-Sachen drin und so was.
Und dann schickt man den einen Body mit, das ist dann eigentlich so der Request.
Und dann kriegt man etwas zurück, was man theoretisch sich auch in einem Webbrowser angucken kann, aber eigentlich ist es nur ein Text, den man da zurückbekommt als Antwort von dem Server.
Und der ist meist, meist nicht immer JSON-kodiert, das hat sich auch so eingebürgert.
Man kann natürlich auch sein, dass man irgendwie ein XML oder sowas zurückbekommt, aber in der Regel ist es heutzutage glaube ich JSON.
Genau, es ist eigentlich nur ein Format von, womit du eigentlich vom Text wieder ein Objekt übersetzen kannst oder von Objekten in Text übersetzen kannst.
Das ist halt dasselbe, was auch bei Swift und IOS das Codable macht.
Also, wo fangen wir denn jetzt am besten an?
Die Vorteile von diesen APIs ist halt, dadurch, dass sich viele Leute irgendwann mal auf so Formate geeinigt haben, dass es relativ leicht ist, sowas zu implementieren.
Und wenn man es einmal verstanden hat, wie sowas funktioniert, dann kann man das halt auch auf ganz viele andere Probleme raufschmeißen.
Also, keine Ahnung, wir können mal anfangen, worüber wir das benutzen.
Ich habe es benutzt, um mit Twitter zu reden, nicht in einer App tatsächlich, sondern auf einer Webseite. Ich habe den Tele-Twitter gemacht, den Twitter im Videotextdesign.
Und da habe ich mit der Twitter-API gesprochen.
Und woher weißt du, was die Twitter-API antwortet?
Da gibt es eine Dokumentation. Es gibt bei Twitter eine Developer-Seite, wo für Entwickler drin steht, was man mit dieser API machen kann.
Wie die Endpunkte sind, was man da hinschicken muss und was man dann als Antwort bekommt.
Also, da kann ich sagen, gib mir mal bitte alle Tweets von diesem User und dann kriege ich alle Tweets von diesem User zurück.
Oder die ersten 200 und dann sage ich, ich hätte jetzt gerne die Tweets von diesem User von 200 bis 400 zurück.
Ja, aber man muss sich da vorher auch immer noch, wir haben ja schon mal drüber geredet, meist auch das in der Authentifizierung.
Genau, das will man ja gerade besonders bei Twitter.
Also, man kann ja nicht sagen, ich darf jetzt einfach so tun, als wäre ich Nico und ich schicke mit Nico das Twitter-Account dann irgendwelche Tweets ab.
Und dafür muss man sich als App-Authentifizierung identifizieren und sagen, hey, ich bin eine App, ich bin offiziell angemeldet bei dir, Twitter.
Und ich möchte jetzt bitte über diese API sprechen.
Das funktioniert mit, also man meldet sich dort auf den Developer-Portal in der Regel an, kriegt dann ein App-Secret, was man irgendwo in seine App einbaut, so dass der End-User das hoffentlich nicht findet.
Also irgendwo im Code ist es dann in der Regel drin und dieses App-Secret schickt man halt mit einem Request mit.
Und dann weiß Twitter dann oder der Dienst, mit dem man kommuniziert, weiß dann, dass man berechtigt ist, mit dieser API zu sprechen.
Genau, und das kann dir dann ja auch Twitter dann in der, irgendwo in der UI anzeigen, welche autorisierten Apps du hast.
Dann kannst du auch sagen, ey, Holger's Spam-App.
Das ist tatsächlich schon der zweite Schritt, wenn der User sich dann identifiziert.
Also, was du mit diesem App-Secret hast, ist, dass du erstmal, Twitter könnte jetzt sagen, okay, hier, die Timeline darfst du dir umsonst angucken mit deiner App, die du da programmierst, lieber Programmierer.
Aber wenn du jetzt direkt Nachrichten auch noch anzeigen möchtest, dann möchten wir bitte dafür, dass wir dir das auch per API zur Verfügung stellen, 100 Euro im Jahr haben.
Könnte Twitter sagen. Und dann geben sie dir halt ein anderes Secret, mit dem du dann mehr Berechtigung hast.
Das könnten sie machen. Machen sie, glaube ich, aber nicht. Auf jeden Fall nutze ich das nicht.
Noch nicht.
Dann will man natürlich auch...
Aber im Moment habe ich glaube ich auch gehört, dass jetzt Tweetbot doch irgendwie neue Funktionalitäten wieder dazubekommen haben, weil sie glaube ich für irgendwelche API-Zugriffe zahlen jetzt.
Das kann sein.
Ja, habe ich auch gehört.
Aber es gibt auch, es gibt auch App-Sees da, keine Ahnung, die ersten 1000 Zugriffe sind kostenlos und wenn du mehr als 1000 in der Woche, im Monat oder so was machst, dann muss man bezahlen. So was gibt es auch dann. Sobald kleine Entwickler quasi belohnen, dass sie das ein bisschen ausprobieren können. Aber wenn dann ihre App so groß wird, dann sollen die halt auch dafür bezahlen. So was gibt es auch.
Ja.
Ein anderer Vorteil, wo du auch schon gerade drauf zu sprechen kommen wolltest, ist, dass ich als jemand, der eine kleine Twitter-App macht, Tinder-Twitter, und der von Security keine Ahnung hat, möchte ich ja echt nicht irgendwelche Passwörterspeicherung, besonders nicht irgendwelche Passwörter, die Leute halt bei Twitter benutzen. Und da bietet halt...
Nein, du möchtest es nicht, du solltest es auch nicht. Niemand sollte es.
Und da gibt es halt ein Verfahren, das nennt sich Oauth.
Höre ich letzte oder vorletzte Folge?
Ja, mit dem halt das umgangen wird. Und zwar dann sage ich als Twitter-App, du als Nico kommst da hin und sagst, ja ich möchte mich jetzt bei Tele-Twitter anmelden. Dann sagt meine Tele-Twitter-App, okay, ich leite dich mal kurz weiter auf die Twitter-Seite. Und da kannst du dann dich einloggen bzw. bestätigen, dass du meine App Zugriff geben möchtest. Und Twitter schickt dich dann zurück in meine App und schickt mir auch gleichzeitig noch einen Token mit. Weil dieser Token ist auch eine lange zufällig generierte Zahlenkette, die kann ich mir dann abspeichern. Und mit diesem Token, diesen Token muss ich jetzt immer wieder mitschicken, wenn ich in deinem Namen den Retweet lesen möchte oder den Retweet machen möchte.
Und auf diese Weise kann ich mich halt als Nico gegenüber Twitter identifizieren. Aber du hast halt die Möglichkeit auf der Twitter-eigenen Seite zu sehen, welche App du autorisiert hast. Und da kannst du halt auch diese Autorisierung wieder zurücknehmen. Kannst sagen, der Tele-Twitter retweetet alles, was ich da twittere. Das will ich aber doch nicht, also nimmst du die Autorisierung wieder weg.
Ja, es wird sich alles sehr komplizieren, ist aber gar nicht so schwer zu implementieren.
Ja, und da will ich auch mal auf vielleicht ein kleines Beispiel, was jetzt nicht in unserem Show-Nauts spielt, aber es gibt eine schöne Seite, die heißt pokeapi.co, also C-O-O, nicht Co. Und die kannst du ja auch noch mal aufmachen, oder?
Das ist eigentlich nur eine API, die sich rund um Pokemon beschäftigt. Und man kann da als Entwickler einfach mal kleine Sachen ausprobieren. Gerade auch wenn man sich die Seite aufmacht.
Zum Beispiel bei mir steht jetzt hier "Try Now", da steht "HTPS" für das sichere Protokoll, für die Internet, für die HTTP-Kommunikation mit "/pokeapi.co/api/v2/pokémon/ditto".
Hier steht es bei mir Ditto, wahrscheinlich steht bei dir was an.
Ne, bei mir steht es Ditto.
Gut, dann ist wahrscheinlich heute das Pokemon-Datei des Tages Ditto. Und dann kann man sich unten anzeigen "View raw.json".
Und dann steht hier irgendwie 29,65 Kilo weit und ist 898 Zeilen lang. Man bekommt dann über diesen Call, also das hier ist jetzt keine Authentifizierung möglich, aber du kannst dir diesen, man könnte sich jetzt auch einfach diesen Text, also man könnte sich jetzt hier "https.pokeapi.co" in, ähm, ne nicht in seinem Browser und dann hinter dem Pokemon Ditto, sondern bekommt man genau den selben Inhalt, der jetzt auf dieser Seite gerade in dem Fenster unten steht, bekommt man als wirklich Raw Text unformatiert in einem fetten Block.
Und dieses Zeug ist dann auch wirklich was deine App empfängt, wenn du was machst.
Was ich jetzt gerne mache ist, als kleines Beispiel, ich nehme den kompletten Text und gehe jetzt auf die Seite QuickType.io.
Über die hatten wir glaube ich in einer sehr frühen Folge des Fster-Tagebuch auch schon mal geredet.
Diese kann man ja aus diesem JSON, sagst du, auf der Seite "generate code now" stellt man auf der rechten Seite seine Language ein, also so zum Beispiel jetzt.
Und dann paste ich dort, also erstmal auf der linken Seite des Fensters, lösche das was da drin steht, das ist ein Beispiel.
Und nehme das Zeug von dem Raw JSON sozusagen, von der Pokeapi und drop in, in, na willst du jetzt bei mir?
Raw JSON, alles markieren und drop das da in QuickType.io und was QuickType.io macht ist, dieses JSON parsen und steht hier eine Leisexample-Data und der kann sich jetzt aus diesem Sample-Data generiert in der Swift-Klasse.
Und das schon so gut, dass man das fast drag-and-drop nehmen kann und man sich sehr, sehr viel Tipparbeit spart, weil man dann einfach in seiner App, er generiert immer noch, scheint anscheinend viel zu sein, kann ich Ihnen vorstellen, er geht da wahrscheinlich alles durch.
Wenn wir jetzt auf die rechte Seite gucken, kann man hier sagen, okay, Sprache Swift, ich möchte das als Struct oder Class haben, Struct macht da meistens Sinn für so ein Geschichten, die werden ja dann auch als Swift 5 kompatibler Code ausgegeben, also auch mit Codable, mit dem man dann relativ einfach über den JSON-Decoder, JSON-Decoder.de decode, quasi sozusagen nur diesen URL-Request und man lädt die Daten runter von dieser API, also man hat glaube ich vier oder fünf Zeilen und du bist von API-Request bis, ich hab meine Daten in der App, weniger Zeilen Code, weil man halt sich extrem viel vorgeneriert hat und man muss nicht per Hand irgendwie herausfinden, ah, das ist ja Ding und so und so und so, sondern das macht dann einfach alles gut.
sondern das macht das alles für dich und versucht herausfinden wie das alles zusammenhört. execute.
es wird nicht immer alles richtig generiert. man muss vielleicht noch ein bisschen nachhaken und
ein bisschen verbessern und kriegt nicht alles hin und wenn man einfach in das JSON ankommt,
dann kann man dann einfach das Struct generieren. das ist, weiß ich nicht, employee Struct. das heißt,
er hat einen Namen, er hat einen Alter, der hat einen kalt, sondern legt sich gleich an Struct,
employee, let name, let surname, let irgendwas und das kannst du dann direkt mit dem JSON-Decoder
befüllen und kannst dann halt sozusagen gleich deine Daten bereit für deine App, damit du sie in
deiner App irgendwo von A nach B verschiffen kannst und dann halt irgendwo in der UI anzeigen. auf
jeden fall mal zu Hause ausprobieren, wer das noch nicht kennt, finde ich eine super Sache. ich hab's
auch für eigene Projekte schon benutzt, also ich hab zum Beispiel die Thingiverse API angezapft. da hab ich
auch Videos gemacht, die haben durch meinen 3D-Drucken-Kram, bin ich auf der Seite gekommen,
und da guckste, ah, die haben eine API, ah, ok, ah, hier, API-Dokumentation und dann haben die halt auch so
JSON-Procken, die sie dir zurückgeben und die hab ich dann auch einfach copy-paste in QuickType, kriegst dann gleich dein fertiges Objekt zurück,
muss dich nicht groß mit Tippen beschäftigen, sondern kannst einfach dann downloaden, ins Projekt
draggen und hast gleich deine richtige fertige sozusagen Datenstruktur. selbiges hab ich auch mit dieser, ich hab die letzte mal drüber erzählt, über dieser Google App AppI gemacht, da gibt's auch so ein ApktiC-Framework von Google, mit dem ich dann auch sozusagen die JSON-Responses mir nehme, da reinkippe und mir zurückgeben lasse. du machst das ja nicht so, oder? ne, also ich hab das bis jetzt nicht so gemacht. du machst das in der Hand-Dische? ja, also tatsächlich die meisten Sachen, wenn ich mit AppI's gesprochen habe, waren selten direkt auf dem Gerät. also einmal die Tele-Twitter ist ja eine Wertanwendung, da brauchte ich dann, da brauchte ich dann also die PHP-Code, da brauchte ich jetzt keine Swift-Klassen, ich hätte mir sicherlich da auch irgendwie PHP-Klassen, ich hätte mir sicherlich da auch irgendwie
PHP-Klassen rausschmeißen können. kann Quick-Type auch. ja, aber tatsächlich bin ich... glaub ich. ne, kann's nicht. ok, ich mach's zurück. gut, dass ich's nicht auf Facebook habe. dann, ich hab mit der Internet Games Database IGDB gesprochen, da gibt es ein fertiges Paket, was du benutzen kannst, weil die halt eine extrem komplexe Klassenstruktur, Datenbankstruktur haben und auch ganz viele verschiedene Endpunkte, auf die man zugreifen kann, und da gibt's ein fertiges Paket. ich hatte aber Probleme tatsächlich, mich für die IGDB die Tokens zu bekommen, weil die durfte ich nicht von dem Gerät generieren, sondern die musste ich über einen Webserver generieren.
Da haben die ein paar Restrictions, Einschränkungen dabei sich implementieren.
Ah ja, da macht es mit deinem eigenen Server.
Genau, da hab ich mir eine eigene API geschrieben, die halt quasi so als man in the middle arbeitet.
Also meine App, wenn du die das erste Mal startest, dann macht die den Request an meinen Server
und mein Server macht ein Request an die IGDB, holt sich einen Token für diesen speziellen User
und schickt den dann zurück an die eigene App und die können dann den Token abspeichern.
Nach einer gewissen Zeit, wenn der halt zu alt ist, schmeißt man den weg und holt ihn ein.
Genau und dafür, um das zu implementieren, musste ich halt mit meinem eigenen Server reden.
Und ich will natürlich aber auch nicht, dass alle Leute mit meinem Server reden.
Also hab ich mir da auch eine Authentifizierung eingebaut. Sehr einfache Authentifizierung.
Ich hab das glaube ich schon richtig gemacht. Ich generiere mir auch einen Token.
Ich sehe schon, wir haben die nächste Kategorie in der nächsten Folge heißt "Hack den Holger".
Ich generiere mir halt auch einen Token und den hab ich halt in meiner App implementiert.
Mit dem greife ich halt auf meinen Server.
Das hat nicht so viele Details, das sind alles Informationen, die man gegen dich verwenden kann.
Das ist halt so. Auf dem gleichen Server läuft auch unser App-Store-Tagebuch.
Also wenn das mal weg ist, dann hat jemand meine App gehackt.
Naja, hoffentlich hat Spotify dann immer noch Kopie davon.
Ja, genau und ich hab dafür meine Tools benutzt auf dem Mac.
Hauptsächlich hab ich das Tool benutzt, das heißt RESTED. Also tatsächlich hab ich angefangen mit dem Server zu reden über das Terminal.
Mit CURL. Cool. Curl. Kann man dann auch HTTP-Requests machen und gucken, was dann zurückkommt.
Aber irgendwann wurde mir das Ganze zu komplex und dann hab ich RESTED genommen.
RESTED ist ein ganz interessantes Tool. Also eigentlich war das auch nur HTTP-Request.
Wie halt jeder Browser. Aber man kann halt jedes Headerfeld und jeden Parameter einzeln eintragen.
Und mal mitschicken oder mal nicht mitschicken, je nachdem wie man das gerade testen möchte oder wie man gerade was ausprobieren möchte.
Kenne ich jetzt auch noch.
Und das fand ich halt sehr gut. Vor allen Dingen um so zu testen, ob...
Ist ja komplett gratis, oder?
Ja, ist komplett gratis.
Auch ohne... Oh. Ohne Werbung, ohne alles. Und überdrehen gut bewertet.
Du kannst deine Headerfelder da eingeben, die du mitschicken möchtest und kannst sie dann auch mal für den nächsten Request wieder ausschalten und nicht mal mitschicken.
Ich frage mich gerade, ob das wahrscheinlich ein ähnliches Tool ist wie Postman. Wurde ich auch noch kurz reden.
Kann sein. Vielleicht kann man es mal vergleichen.
Mit Postman hast du halt auch... Du bist so ein...
Na ja, es ist halt so ein Collaboration Platform API Development für aber alles mögliche, was halt als Browser Plugin in Chrome, Firefox, ich glaube auch Safari und so weiter funktioniert.
Und man dann auch so APIs einfach sich heller befüllen kann und REST APIs ausprobieren kann und Edge Cases ausprobieren und so weiter.
Also ich schätze mal, es geht wahrscheinlich sehr ähnlich richtig.
Das kann sein, ja.
Also wahrscheinlich kann Postman noch mehr, weil ich glaube, das benutzt jeder Entwickler, den ich irgendwie im professionellen Bereich kenne.
Wollte schon grad sagen. Ich will das jetzt nicht, aber ich bin noch nicht im professionellen Bereich.
Ja, okay. Nee, aber ich hab auch schon gesehen, es gibt... Auf jeden Fall wird Postman auf.
Man findet das manchmal auch in Dokumentationen, sind komplette Postman, sozusagen Templates.
Heißt man lädt sich dieses Template und kann dann mit zwei, drei Eingaben, was ist ich, Token, sonst irgendwas und Secret eintragen, kann man dann die komplette API ausprobieren über diesen Postman und dann hat er auch echte Responses zurückkriegen und so.
Klingt fast so, als wenn REST das auch kann, oder?
Ja, also...
Ja, so weiß ich nicht. Man kann auch seine Request abspeichern und...
Ich seh schon, ja, das kann man jetzt.
Und du bekommst halt auch den kompletten HTTP-Helder zu sehen, den du jetzt im Terminal oder halt auch im Browser ja normalerweise nicht siehst.
Genau, damit hab ich halt vieles gemacht.
Ja, klingt solide, muss ich auch mal gucken. Kann man auch was wie Cookies speichern und so weiter.
Weil es gibt ja verschiedene Optimisierungsmethoden, also kann man da alles mögliche...
Oh, das ging auch?
Ja.
Okay.
Stories and Cookies Automatically.
Allow self-signing SSL-Zertifikate.
Ja, okay, cool.
Na ja, hat auch, ich glaube, keine einzige schlechte Bewertung.
Schlechteste sind 3 Sterne.
Aber ist auch schon anscheinend...
Die Bewertung, die App ist schon sehr alt, sehe ich gerade.
Hat aber auch schon... Die funktioniert immer noch, die letzte Bewertung ist vor 2 Jahren.
Also tatsächlich steht in der App hier Version 2.7 von 2009, das habe ich wohl nicht gesagt, aber Copyright 2012.
Also ist in 9 Jahren mega abgeliefert worden.
Aber sie funktioniert immer noch.
Vielleicht, ja, braucht sie keine Ablätten.
Sie sieht auch noch so ein bisschen... Sie hat immer noch alte Ideen, das sieht noch nicht so... Das sieht ein bisschen nach.
Na ja, sehr gern.
Ein anderes Tool, das ich teilweise benutzt habe, ist der Advanced REST Client, das ist ein Google Chrome Plugin.
Ja, kann man auch benutzen, wenn man Google Chrome sowieso als Browser die ganze Zeit offen hat.
Ist das vielleicht auch nur Google, weil die keine anderen Konzerne sind.
Ja.
Ähm, auf jeden Fall auch spannend für mich, da auf jeden Fall andere Tools kennenzulernen.
Ich hoffe, der eine oder andere Hobbyentwickler oder auch professioneller Entwickler lernt hier Tools kennen, die wir auch nicht kennen.
Ich bin ja mal erstaunt, dass ich etwas beibringen konnte überhaupt hier.
Nein, es ist ja alles ein...
Ja, ich habe vielleicht einen kleinen Wissensvorsprung im Thema App-Programmierung.
Aber du kannst mir bestimmt mehr Dinge zu Flugzeugen erzählen.
Vielleicht.
Dingy, was hast du mit gesprochen? Und womit hast du noch gesprochen? So als APIs.
Ah, wie gesagt, die Google API.
Dann hatte ich noch, wo auch erst ein kleines Open Source Project geworden ist, die Program API, was so ein Imageboard im Internet ist, wo Leute sich Memes und lustige Bildchen austauschen.
Die haben auch eine API, die hatten die iOS App, die hatten eine Android App.
Ich hatte, ich glaube, am Anfang von Corona irgendwie Langeweile und ich hatte das schon mal aufgegriffen, dann eine App zu bauen.
Und die habe ich jetzt auch schon recht weit getrieben und Leute lieben mich dafür.
Und ich habe bestimmt da irgendwie auf dem Test-Flight über, ich glaube schon fast 4000 London User, die die App-Rege benutzen, was ich so mitbekomme.
Ja, ich habe mit dem Site-App-Man geredet und habe gesagt, ja, darf ich da irgendwie einen Schwenkknopf einbauen und sie installen kostenlos?
Ja, nee, möchte ich nicht, dass du mit meinem Seite Geld machst, ohne dass du irgendwie, also sehr mir erlaubt, ja, irgendwie dürfte ich den, oder dürfte ich bei dem Untertrag stehen und Teile abbekommen und das ist jetzt eigentlich noch nicht dadurch gerungen, weil es ist halt auch unglaublich viel.
Ich habe jetzt natürlich so basicmäßig die App implementiert, da gibt es unglaubliche Features, die noch zu implementieren werden, die ich nicht gemacht habe.
Ja, es ist so ein bisschen einerseits, also ich lasse die auf dem Test-Flight leben, weil alle 90 Tage muss ich ab den Nachschieben und so lange funktioniert sie, all in dem jetzigen Stand, wo sie ist.
Sie ist, ja, man könnte die Story, die würde eigentlich schon gehen, aber ja, irgendwo ist es halt auch keine Ahnung, ob ich es machen sollte.
Also irgendwie ziehe ich mich noch gerade da was zu tun, weil im Prinzip ist es nicht fertig und ja, wenn ich es wollte, dann müsste ich sie kostenlos reinhauen, weil sonst mache ich mich wahrscheinlich bei dem Appen unbeliebt oder bei dem ganzen Team, weil die machen das auch schon ein bisschen länger.
Und andererseits denke ich mir auch so, ja, dann müsst ihr eure Appi dicht machen, weil die Appi ist offen und da müsst ihr damit auch Leute rechnen, dass Leute kleinste mitmachen.
Dann müsst ihr irgendwie AGBs haben, haben sie wahrscheinlich auch alle, keine Ahnung, wir waren im Fun-Side-Project, ich habe auch gehofft, okay, vielleicht hilft ja irgendwer, müsste man eigentlich denken, weil 4000 Jungs haben das irgendwie gesagt, geil, ich helfe dir dabei.
Bis jetzt habe ich nur nette Tipps bekommen von Menschen, die auch teilweise echt gut waren und hilfreich waren und im Prinzip habe ich da viel Zeit reingesetzt, im Prinzip eigentlich nur, damit ich selber nicht mit der Webseite integrieren muss auf dem Handy, sondern dass ich meine eigene App habe und dass ich mir halt auch irgendwie, was hat mich immer genervt, manchmal findet man was lustiges, wenn man möchte, das Video weiter schicken und das Affari ist ja einfach so belödend und du kannst kein Video in das Affari runterlagen und das habe ich mir damit sozusagen die Funktionalität gebaut, dass ich halt Videos und Bilder direkt runterlage.
Und du musst dir den die Affari verkaufen, dann soll ich dir das unter ihren Namen in den Store stellen und du soll dir der 10.000 Euro vergeben.
Ja, kann ich machen, ich habe es auf GitHub, das ist Open Source, wenn man nicht ein bisschen stockt, findet man das bestimmt auch.
Ist unter einer Lizenz die Non-Commercials, also jeder darf sich runterladen und weiterbasteln, aber nicht konviziell benutzen, das darf nicht.
Ja, da habe ich was gebastelt und habe ich auch das QuickType viel benutzt, weil da habe ich auch einfach Jason Sponsoren bekommen, habe die reingedroppt und habe mir da viel, viel Tipparbeit gespart.
Also hast du eigentlich gar nichts gemacht für die Webseite? Die hat sich gar nicht selbst geschrieben.
Nein, im Prinzip habe ich, im Prinzip, ich muss sagen, dieses Structs erstellen ist halt auch unnötig, das könnte, also deswegen gibt es ja auch so Generatoren, weil es halt einfach ein blödes Tipparbeit ist und meiner Meinung nach sollte man auch so etwas benutzen, weil dadurch kann man auch was lernen.
Vielleicht kannte man es ja noch gar nicht, wie sowas funktioniert und wie sowas aussehen muss und kann es dann auch für sich anpassen und dann auch andere Dinge dabei.
Und auch die letzte App, die ich noch so aus meinem Kopf habe, ist die Reddit-App, die ich ja für meinen Virtual Reality Client, der sozusagen Reddit-Bilder in VR anzeigt.
Ziemlich alte App schon, schon jetzt ein paar Jahrchen alt, funktioniert immer noch eigentlich fast ganz gut, ich glaube, ich müsste mal zwei der Bugs fixen, da gibt es irgendwelche Rotation-Probleme, aber sie funktioniert noch.
Ja, momentan habe ich mich jetzt noch nicht rumgerissen, weil sie natürlich auch eher sehr nischige App ist, die eigentlich nicht viel Geld einspielt.
Ich sehe in den Statistiken, ja es benutzen immer noch ein paar, aber das ist im Handvollbereich.
Und einmal, alle zwei, alle zwei Wochen mal drei Euro, weil sich irgendwie doch nochmal pro shoppt.
Aber wenn du nichts mehr tun musst, dann kommt drei Euro rein, ist auch gut, dann Kaffee.
Ja, ja klar, aber es ist jetzt nicht, die App hat eh nie viel Geld gemacht, das war immer ein Liebhaberprojekt und ich fand die Technologie geil und fand es cool und habe Spaß gemacht und ja, das sind auch die besten Projekte.
Ja, habe aus jedem Projekt, auch wenn ich nicht viel dabei gelernt habe, habe ich viel dabei gelernt, nicht viel mit verdient, habe ich doch immer viel dabei gelernt und das ist ja auch meistens das Richtige, weil aus all diesem Wissen, was man ansieht, kann man dann irgendwann das große Puzzle zusammensetzen.
Genau.
Dann wird man Milliardär.
Ja, gibt es sonst noch was zu Appies zu sagen?
Die Links gibt es natürlich wie immer auf unserer Webseite unter www.episodagebuch.de.
Ansonsten gibt es bestimmt noch tausend Sachen zu sagen, aber ich glaube, wir haben es auch ganz gut angerissen.
Wenn ihr noch Fragen habt zu Appies und wie man mit denen spricht, schreibt es uns in die Kommentare oder schickt uns ein Audio-Kommentar.
Da würde ich jetzt nochmal kurz einhaken, weil wir haben jetzt auch geredet, Appie und wie man damit, was man damit macht oder so, aber wir sind noch gar nicht so weit reingegangen, weil im Prinzip gibt es auch noch auf Swift.
Und wenn man jetzt wirklich mal so ein bisschen was eingemacht, die URL-Session, das ist ja eigentlich, wie man an sowas herangebt und da gibt man ja auch, da kann man konfigurieren, okay, wie rede ich mit der Appie, kann man sein Held konfigurieren, man kann diesen Gap oder Put-Request konfigurieren und sagen, wie möchte ich damit reden.
Und ich benutze mittlerweile auch gerne, es gibt jetzt URL-Session-Combine-Appie, die auch schon lange drin ist.
Seit es Combine, glaube ich, gibt, gibt es auch in Foundation und in Combine und Foundation halt Extensions für URL-Session, mit der man dann relativ sexy, in Nerdkreisen sozusagen einen Datatask Publisher machen kann, also das kann ich auch nicht schauern.
Man hat dann relativ einfach, dass man sagt, URL, URL, weiß nicht, example.com/endpointschritt hier, und dann hat man sein Kernsignal, ist gleich URL-Session und dann hast du nur noch Punkt Datatask Publisher vor URL und dann kann man schon sagen, da geht es schon am nächsten Tag los.
Da kommt dann schon sozusagen dein JSON raus aus diesem Datatask Publisher und als nächstes kommt ein Try-Map und dann sagt der Element Data in und dort passiert dann schon sozusagen dein Parsing deiner Daten, ob du deine Daten auf deine Datenmodelle mapen kannst, also auf deine Structs, die du zum Beispiel auf QuickType zum Beispiel rausbekommen hast.
Kann man da zusammenstecken und man kriegt dann unten raus hier, hey, hat funktioniert, hier sind deine Objekte, mach was damit, viel Spaß.
Würde ich auch sofort draufgehen, wenn irgendjemand damit arbeitet, nehm Combine, schubst er hin, ist kalt, was er arbeitet, damit ich muss immer wieder feststellen, das macht so viel, alles leichter.
Komm, über Combine haben wir in Folge 13 detailliert gesprochen, ich hab es tatsächlich immer noch nicht benutzt.
Ja, ich weiß, hab ich auch lange Zeit ignoriert, es sieht komisch aus, hier nix mit Herrad, Niveau und alles so komisch untereinander und Punkt und hier und wieder Punkt, Punkt, Punkt, Punkt, Zink und so.
Aber wenn du dann nur einfach merkt, dass du dir einfach wie so eine Pipeline von ganz unten, aus dem letzten Loch von deiner API bis oben zur UI durchziehst, ohne dass du dich darum kümmern musst, dass irgendwie hier Delegate und Observer und nein, du gibst einfach dieses eine Ding durch und jeder, der irgendwie an diesem Ding vorbeikommt, kann sagen, ey, ich möchte auch davon was werden.
Zink, boom, du kriegst sofort mit was dann passiert und das kann jeder machen.
Ich lerne auch immer noch viel dazu in Combine und ich benutze das im Arbeitsumfeld eigentlich nur noch.
Ich kann euch einfach nur empfehlen, schaut euch nicht in alten Kram an, da steht genug alter Kram auf der Kiste, schaut euch diese, wenn ihr zu URL Session guckt, den Link in Combine an.
Ich bin auch schon dabei, auf dem Open Source Projekt für die Pro-Programm App das auf Combine umzustellen, weil ich da auch mit, als ich damit angefangen habe, habe ich noch nicht so viel von Combine gewusst, ich wusste das es gibt und konnte damit nicht viel anfangen.
Ja und hab das noch so alles händisch implementiert und bin jetzt dabei schon das auf Combine umzustellen, einfach mal, because I can und ich hab manchmal Zeit dafür, wo ich sagen müsste.
Ja und dann glaube ich haben wir jetzt auch genug über Apis gesprochen. Also wenn ihr Fragen dazu habt, gerne fragt uns.
Schickt uns auch gerne zum Roasten.
Ja wir roasten euch und dann die Api der Woche.
Die Api der Woche, genau. Und zwar die Api der Woche hat so ein bisschen was mit Combine zu tun tatsächlich auch.
Ich bastel gerade an einem wirklich, wirklich, wirklich ein sehr kleines Spiel, aber das ist erst mal ein Spiel und da gibt es halt auch ein bisschen user generated Content und da ich mit meinen Apps in der Regel kein Geld verdiene, will ich auch kein Geld für den Server ausgeben und ich hab auch keinen Bock mit Authentifizierung und so was mich rum zu ärgern.
Deswegen benutze ich CloudKit und CloudKit ist unser Framework der Woche.
CloudKit ist der Service, den Apple anbietet, um halt online Funktionalitäten und Sync Funktionalitäten in eine App zu integrieren.
Es gibt gewissen Storage, den man für eine App bekommen kann, je nachdem wie viele User man hat, erhöht sich der sogar.
Und man kann relativ einfach, wenn man mal alles was man über MySQL und über Datenbank weggeschmeißt, komplett von vorne anfängt, kann man relativ einfach Daten zwischen Geräten synchronisieren und das müssen nicht nur Geräte, die alle derselben Person gehören sein, sondern auch zwischen verschiedenen Usern, ohne dass irgendeiner einen Usernamen angeben muss, ohne dass irgendeiner ein Passwort angeben muss.
Es gibt verschiedene Datenbanken innerhalb CloudKit. Also ich benutze CloudKit als Datenbank, es gibt verschiedene Funktionen von CloudKit.
Ich kann sagen, ich möchte Daten in einer privaten Datenbank speichern, das ist dann nur für diesen User, aber das ist halt für alle Geräte von diesem User.
Also das heißt, wenn du eine Notiz machst in einer Notizapp auf deinem iPhone und das in die private Datenbank schreibst, dann erscheint die auch auf deinem iPad, wenn du dort mit dem gleichen iCloud-Account eingeloggt bist.
Das ist auch immer die Voraussetzung, dass man per iCloud eingeloggt ist, man kann nicht ein ungeicloudetes iPhone benutzen.
Genau, du kannst auch ein ungeicloudetes iPhone benutzen, dann kriegst du halt Fehlermeldungen zurück von der CloudKit API.
Das merkt ihr im Simulator, da funktioniert immer alles nicht so richtig, wenn ich nicht eingeloggt bin.
Es gibt eine shared Datenbank, da kann man halt Sachen ablegen, die man mit anderen Leuten teilen möchte.
Und es gibt eine public Datenbank, da kann man halt Daten ablegen, die für alle sind.
Das kleine Nachteil, die Daten, die für alle sind, kann nur der Datenbesitzer, der die abgelegt hat, wieder editieren.
Das ist ein bisschen doof, also das schränkt einen ein bisschen ein manchmal, aber ansonsten ist es eigentlich sehr, sehr praktisch, finde ich.
Und man kann das auch wieder mit Combine kombinieren.
Wenn du mich updates, also diesen Fall habe ich jetzt, weswegen ich mich jetzt auf dem nächsten mit Combine beschäftigen muss, wenden dir, als ich benutze für mein Programm, diese public Datenbank.
Ich möchte, dass alle Nutzer meiner App untereinander Content austauschen können.
Also das ist jetzt auch nicht irgendwie Geheimnis wie wegen der Notizen, das ist halt, sind halt Levels von dem Spiel.
Das sind Levels, die man austauschen kann.
Und ich möchte halt, wenn ein neues Level in diese Datenbank geschrieben wird, soll jeder User da, den diesen Level auch sehen können.
Und dazu mache ich dann halt einen, abonniere ich halt diese Datenbank oder auch diesen Datentyp, die Levels, und sag immer, wenn sich jemand was schickt, dann schicken wir mal, sag mal bitte Bescheid, lieber CloudKit.
Und dann kann ich halt mit Combine darauf reagieren, welches richtig verschwinden.
Ja, ich kann mir das auch gut vorstellen, weil dann wirst du in all den, wie gesagt, du wirst wahrscheinlich von irgendwo aus dem CloudKit-Fallberg einen Publisher zurückbekommen, ein Typ Any-Publisher wahrscheinlich, mit irgendeinem Typ, Datentypen und vielleicht einem Error.
Und du holst dir dann nur diesen Publisher und sagst Punkt Sync und du bekommst dich jedes Mal, wenn du irgendwas veränderst, kriegst du deine Sync mit und kannst da deine Update-Loop schreiben.
Aber da darfst du mich dann auch noch gerne, wenn du irgendwo hängst, kann ich dir gleich weiterhelfen.
Und das Tolle ist halt für den Benutzer, das alles unsichtbar im Hintergrund, also der kriegt das gar nicht mit zusammen, bei ihm sind halt einfach dann neue Leveler.
Und da ist wahrscheinlich dann dein Problem, dass nur der Ersteller das editieren kann, du möchtest das alle die Level editieren können oder?
Aber solltest du dann nicht vielleicht irgendwie Games-Entertainment?
Nein.
Also das würde ich doch, musst du nicht selber machen.
Für die Heißcores?
Ja, ja, da gibt es alles noch von Games-Entertainment.
Ja, viel zu viel.
Guck mal.
Vielleicht, aber ich muss jetzt...
Da gibt es Liederbauts und sonst irgendwas und auch mit dem Games-Entertainment, mit dem man sich einloggen kann und so.
Ja.
Sollte auch eigentlich alles noch gut verbaut sein.
Aber Level austauschen, das müsst ihr schon trotzdem mit CloudKit machen.
Weiß ich nicht, aber ich glaube die ganze Heißcore-Geschichte solltest du mit dir bei Games-Entertainment machen.
Ja, die könnte ich vielleicht mit Games-Entertainment machen.
Dann kommt dieser schöne Games-Enter-Banner um bei meiner App.
Ich weiß gar nicht, das habe ich auch schon lange nicht mehr gesehen.
Aber ich meine, ich meine auch im App-Store und im Spiel ist auch gerade momentan nicht so viel die Sachen, die irgendwie Games-Entertainment...
Ich weiß, dass es in App-Store Connect auch noch so Games-Enter-Dinge gibt unter...
Ja, also ich habe die mit dem Heißcore-Kram noch nicht angelegt.
Ist halt auch eigentlich nur eine Nummer, ne?
Also nur eine Zahl, die ich da...
Ja, aber dann ist ja vielleicht gerade am einfachsten, wenn es nur eine Nummer ist, da gibt es ja bestimmt eine Datenstruktur in Games-Enter, bevor du da was selber baust. Und... ja. Warum bekommst du da glaube ich auch diese ganze Liederbordgeschichte? Du bekommst ja fast Geschenk, glaube ich sogar.
Mit irgendwelchen View-Controllern, die du anzeigen kannst und so.
Ja, ja.
Gab es auch früher in dem schönen Casino-Filz.
Genau, Casino-Filz. Meine App wird kein Casino-Filz haben wahrscheinlich.
Also auf jeden Fall im aktuellen Standpunkt der Entwicklung nicht.
Was ich aber gemacht habe, die Level sind relativ klein.
Die Level lassen sich in 10x10 Feldern abbilden zurzeit.
Theoretisch kann ich ganz groß machen, aber zurzeit habe ich glaube 10x10 Felder.
Und ich wollte natürlich für jedes Level ein Vorschaubild machen. Wir kommen jetzt echt weit ab vom Framework der Woche. Aber ich wollte halt für jedes Level ein Vorschaubild machen.
Hab dann erst irgendwie auf dem Gerät dieses Level generiert und dann ein Bild davon gemacht, dass es in Cloud-Kit hochgeladen, bis ich dann gemerkt habe, scheiße, diese Bilder, die iOS da generiert, die sind extrem groß.
Also die für meine 10x10 Felder, Spielfelder, waren die Level-Screenshots, die dann automatisch erstellt wurden, mega groß.
Und dann habe ich gesagt, scheiße, dann reicht ja mein Cost- und Storage gar nicht. Oder läuft halt schnell zu.
Und jetzt habe ich einfach, lasse ich die Bilder tatsächlich erst... ich spreche jetzt tatsächlich nur das Level ab und lasse die Bilder dann automatisch generieren auf dem Gerät, wenn die Level-Daten da sind.
Und in Pixel-Grafik, diese Bilder sind dann 10x10 Pixel groß. Weil ich vielleicht jedes Teil mit einer Farbe darstelle. Und das klappt ganz gut.
Die sind super schnell, die Bilder sind klein und es ist halt auch ein bisschen abstrakt und das macht das eigentlich auch ganz interessant für mich.
Cool. Und da hast du ja auch gerade jetzt angesprochen, man kann dann auch schon noch mehr bei Apple, bei Apple dann Geld einschmeißen, wenn man mehr speichern will.
Ja, ich will ja auch kein Geld für Verlangen für diese App.
Nee, nee, nee, ist klar. Aber ich meine nur, wenn man da irgendwie größere Sachen bauen will, kann man da auch Geld einschmeißen und mehr speichern.
Also ich glaube, pro User wächst das ja mit. Pro User irgendwie so und so viel Kram. Kannst du auch noch mehr machen, irgendwie noch Geld reinschmeißen.
Und das glaube ich wächst auch mit dem ganzen, wie viele User du hast. Und dann skandiert das nach oben. Das heißt, umso performanter man programmiert, umso besser kommt man damit klar, wenn man missbaut, muss man Geld sein.
Und was ich sogar weiß, man kann das auch über dann, ich glaube, das war eine JSON-App von außen erreichen. Das war erst so zeitlang nicht so.
Man kann mittlerweile auch irgendwie JavaScript oder JavaScript-Appy, man kann irgendeine Web-Interface benutzen.
Genau, das ist tatsächlich auch so eine Sache, wo ich noch mal arbeite. Ich will für mich selber ein Interface bauen, mit dem ich Levels relativ einfach wieder löschen kann, ohne durch das iCloud Backend zu gehen.
Weil wenn jetzt jemand baut und levelt das aus wie ein Hakenkreuz, das will ich nicht in meiner App haben, dann will ich das selektiv wieder löschen.
Oh, aber Herr Holger, da muss doch jetzt eigentlich AI bauen, die das herkommt. Aber was willst du denn anfangen? Pläne das Vakina raus, dann Hakenkreuz oder was noch?
Hakenkreuz und so.
Und dann macht jemand aus Asien, macht die Swastika, so wie es eigentlich ist, falsch rum oder andersrum. Dann ist es wieder das Zeichen für die "Was, Sonnen Gott?"
Ja, genau, aber das ist das, das ist das. Das ist jetzt kein neues Borderlands, kein Doom und auch kein Candy Crush, was ich da baule, das ist deutlich einfacher. Aber mein erstes Spiel. Und mal sehen, ob das dieses Jahr noch release wird.
Bisschen Lockdown haben wir noch. Bisschen Lockdown haben wir noch. Gut, Leute. Wir machen jetzt auch hier Lockdown, einfach eine Folge. Schickt uns Kommentare, schickt uns Fragen zu Upis, schickt uns eure Apps zum Roasten. Und dann sehen wir uns beim nächsten Mal wieder. Tschüss.
Tschüss.
Das App Store Tagebuch verabredet von Nico und Holger. Die Links zu dieser Sendung wie auch den Link zu dem Intro von Luke Hash findet ihr auf App Store minus Tagebuch.de.