2009-12-04 10 views
17

MonoTouch scheint eine großartige Plattform für die iPhone-Entwicklung zu sein, aber ich bin besorgt über die Bereitstellung im Apple Store. Gibt es Beispiele für Anwendungen, die derzeit auf iTunes verfügbar sind? Wir beginnen ein neues Projekt für das iPhone, und es wäre großartig, den gesamten Stack in C# zu behalten, aber wir wollen nicht das Risiko eingehen, wegen MonoTouch vom Apple-Store abgelehnt zu werden.Ist MonoTouch eine praktikable Plattform für die iPhone-Entwicklung?

Ich habe über mehrere Spiele gelesen, die derzeit mono (nicht MonoTouch) für 3D-Grafiken verwenden, konnte aber nichts über MonoTouch finden.

+0

scheint ein Duplikat zu sein von: http://stackoverflow.com/questions/1583856/is-monotouch-worth-the-cost-or-should-i-just-learn -objective-c –

+0

Es scheint, dass der Hauptpunkt dieser Frage ist, die Kosten für den Besitz von Monotouch vs Learning Obj-c zu vergleichen. Mein Fokus liegt auf der realen Nutzung von Monotouch. Ich bekomme die Ähnlichkeit, aber ich denke, die Antworten würden anders sein. –

+0

schlechte Nachrichten dazu: http://stackoverflow.com/questions/2604033/is-monotouch-now-banned-on-the-iphone –

Antwort

55

Tippen Sie das auf meinem Telefon aus, so werde ich ein wenig knapp - Entschuldigung dafür.

Wie dem auch sei:

- Wie in einer früheren Antwort sagte, gab es Monotouch-Anwendungen im App Store veröffentlicht. Ob es zwei oder ein Bajillion ist, spielt keine so große Rolle. Der Unterschied zwischen Eins und Null ist unendlich - die Antwort ist eindeutig: Ja, Apple wird MonoTouch-Apps genehmigen.

- MonoTouch spielt nach Apples Regeln. Es spuckt native Bits aus. Es gibt keine Interpretation von Code, noch gibt es JITting. Ihre MonoTouch-App ist ein Bundle wie jeder andere und enthält eine native Binärdatei wie jede andere.

- MonoTouch-Apps sind größer als sie wären, wenn sie mit Apples Stack geschrieben wären. Dies liegt daran, dass Ihre MonoTouch-App auf einer Teilmenge des Mono/.Net-Frameworks basiert. In dieser Hinsicht, wenn Sie einmal zu dem gehen, was Schiffe ist, gibt es nichts besonderes über eine MonoTouch App. Ich arbeitete in einem Unternehmen, in dem wir unsere Apps (entwickelt mit Apples Stack) gegen unser benutzerdefiniertes Framework entwickelten. Es hat die Größe unserer Apps erhöht, aber auch die Produktionszeit verkürzt (und das ist immer der Kompromiss, richtig?). Außerdem kann die Größe des App-Bundles unmittelbar nach der Kompilierung trügerisch sein. Da Bundles für den App Store gezippt werden, nimmt die Größe drastisch ab - Sie können problemlos eine MonoTouch-App schreiben, die und innerhalb der zulässigen Größenbeschränkung für apps OTA (Ich bringe dies, weil es eine Frage ist MT n0obs (zu Recht) neigen Fragen). Also, Apple hat keinen wirklichen Grund, basierend auf der Größe abzulehnen.

- Egal, ob MonoTouch oder ein benutzerdefiniertes Inhouse-Framework wie das, mit dem ich gearbeitet habe, das MonoTouch-Zeug, wenn es mit Ihrer App ausgeliefert wird, ist nur ein anderes Framework, das in Objective geschrieben werden könnte. C.

- Wenn Sie Bedenken haben, Ihre App für die Verteilung mit dem gesamten MonoTouch-Stapel zu konfigurieren und wie sich dies auf Ihre Genehmigungseffekte auswirkt, können Sie MonoDevelop (oder das mtouch-Dienstprogramm über die Befehlszeile) Xcode ausgeben lassen Projekt. Sie werden sehen, dass Ihr Code transformiert wurde - Sie werden sich die native Assembly ansehen (nicht irgendeine Art von IL). Sie können Ihre von MonoTouch erstellte App direkt in Xcode erstellen und ausführen. Zu diesem Zeitpunkt ist MonoTouch praktisch nicht mehr im Bild (außer als Framework, gegen das Sie bauen (z. B. MapKit)).

Aus irgendeinem Grund stört all dies eine sehr kleine, aber lautstarke Untergruppe von iPhone-Entwicklern, die aus irgendeinem Grund die Idee von Leuten, die sie nicht kennen, nicht mit einem anderen Tool zum Erstellen von Apps vertragen können. Aber ihre Hetze ändert nichts an der einfachen Tatsache, dass Apple MonoTouch-Apps (und Unity-Apps lange davor) akzeptiert hat. Der größte Grund, warum MT-Apps abgelehnt werden, ist, dass MT-Entwickler nach meiner Erfahrung (ich habe schon mit einigen geredet - nachdem ich einige Vorträge gehalten, in Foren gepostet, Mailinglisten hier veröffentlicht habe) ...), haben sie noch nicht gelernt, wie man eine iPhone App entwickelt. Das ist etwas, was iPhone-Entwickler von regieren müssen, wie sie ihre Apps schreiben. MonoTouch ist nicht das Hindernis - es ist zum Beispiel zu wissen, dass Apple möchte, dass deine App auf eine bestimmte Art und Weise aussieht und funktioniert - sie sollte aussehen und sich wie andere (gute) iPhone-Apps verhalten und sollte es auch nicht tun gehören zu den Beispielen für Versuche, Desktop-Apps für ein Telefon zu schreiben (an denen ein durchschnittlicher Entwickler seinen ersten Fehler beim Übergang zur mobilen Entwicklung macht).

Letztendlich wird Ihr Werkzeug der Wahl nicht so wichtig sein, solange es Bits erzeugt, die nach Apples Regeln spielen (wie MonoTouch). Das eigentliche Hindernis ist das iPhone-App-Design zu lernen.

.Net-Anwendungsentwickler, ob unter Windows, Windows Mobile oder wo auch immer Mono (nicht MonoTouch) läuft, sind daran gewöhnt, Apps nach ihrem eigenen Geschmack zu entwickeln. Das fliegt nicht in der iPhone-Welt.

Sie können sicher mit MonoTouch gehen. Wie gezeigt wurde, wird Apple MT-Apps genehmigen.

Die Sache, die Sie wirklich tun müssen (wieder, unabhängig davon, welchen dev Stapel Sie wählen) ist lesen Apples Docs auf iPhone App Design und ihre Richtlinien. Es gibt eine riesige Menge von Entwicklern, die ihre App-Ablehnungen Apple als böse bezeichnen (oder was auch immer - uninformierte Entschuldigungen, im Grunde genommen), wenn die Wahrheit ist, dass ihre Apps Müll sind und es klar ist, dass die Entwickler nicht nach den Regeln spielen Bitte lesen Sie die Regeln).

Am Ende werden Sie in vielen Fällen viel weniger Code schreiben, wenn Sie MonoTouch verwenden, und die Kosten dafür sind ein größeres App-Bundle (das, wie gesagt, nach dem Zip sehr vernünftig groß wird) zur Verteilung).

Das ist nicht viel ein Problem. Mit 3g schwitzen die Benutzer nicht beim Herunterladen von 2-3MB großen Apps. Wenn es klein genug ist, um OTA zu senden, ist alles in Ordnung. Und in den Fällen, in denen Ihre App das Limit überschreitet, sind wahrscheinlich eingebettete Ressourcen (Medien - Bilder, Videos usw. - so wachsen Bundles typischerweise zu reinen Wifi-Größen), und das ist auch etwas, mit dem sich Objective-C-Entwickler befassen müssen Das ist kein MonoTouch-Problem.

Also, ignorieren Sie die Hasser (die nicht einmal versucht, Monotouch haben oder die Mühe zu lernen, wie es funktioniert), und sicher sein, dass, solange die App auf Apples Richtlinien entspricht, gibt es kein Grund für sie ablehnen es. Es bedeutet nicht, dass deine App garantiert akzeptiert wird, solange du sie richtig designst (viele Apps werden ohne ersichtlichen Grund abgelehnt), aber du kannst dich mehr oder weniger als gleichwertig mit Entwicklern ansehen, die Apples Tools verwenden.

this helps :)

+0

Rory, vielen Dank für die Antwort! Das ist perfekt für mich: eine gute Analyse der aktuellen Fakten rund um Monotouch und die Abwägung der Plattform. –

+1

Ich bin froh, Ihnen helfen zu können :) –

+6

Nur um auf Ihren Kommentar über den Aufbau einer * guten * iPhone-App zu kommen - ich denke, es gibt genauso viele schreckliche Obj-c iPhone-Apps wie für Monotouch. Nur sind sie oft vergessen, wenn eine schöne App erstellt wird. Und bis jetzt - kein schönes Beispiel für ein Monotouch wurde erstellt, so dass die Leute es beschimpfen und beschuldigen .Net Jungs für das Verständnis der Plattform (ob das wahr ist oder nicht). Ich bin mir sicher, sobald Monotouch mehr Zeit mit der Entwicklung schöner Apps hat, wird Monotouch die Interessen anderer Menschen ansprechen. – chrisntr

10

Die MonoTouch-Community verwaltet eine list of MonoTouch applications, die heute im Apple Store verfügbar ist und mit MonoTouch geschrieben wurde.

+0

So zwei Apps wurden bisher erstellt - eine, die nicht aussieht, wie es dauert Vorteil der iPhone-Hardware viel und einer, der wahrscheinlich entfernt wird, sobald Hasbro Wind davon erfasst. Huch. – bpapa

+4

@bpapa Zwei Apps weniger als zwei Monate nach der Veröffentlichung des Frameworks, einschließlich AppStore-Genehmigung. Was ist dein Punkt wieder? –

+0

Es gibt kaum Hinweise darauf, dass MonoTouch eine brauchbare Plattform für die iPhone-Entwicklung ist. Weißt du, auf die gestellte Frage angesprochen. – bpapa

3

Die Spielentwicklungs-Plattform unity verwendet die gleiche Mono-Touch-Code-Basis für C# -Support (und hat zum Projekt beigetragen).

+0

Genau das meinte ich mit "Spielen in Mono". Ich habe den Namen der Plattform vergessen. Ich denke, diese Art von beweist, dass Apple kein Problem mit dem Mono-Compiler hat, aber es sagt nichts über die Bindungen an die Touch-Benutzeroberfläche aus. –

+0

Sie kompilieren nicht nach CL, da dies von Apple nicht erlaubt ist, und gemäß der Monotouch-Dokumentation binden sie an alle iPhone-APIs. – Oded

+0

@Oded - Die Bindungen sind ziemlich gründlich, und Sie können leicht neue Bindungen erstellen (einschließlich Bindungen an Ihre eigenen Bibliotheken, was ziemlich cool ist und die Flexibilität von MT zeigt). Eine Sache, die sie (noch) nicht * binden, ist CoreData, aber das ist eine Herausforderung, die über einfache Bindungen hinausgeht. Um CoreData * gut * zu machen, müssten Sie auch mit den CoreData-Tools von Apple zufrieden sein. Ein generelles Problem ist die Mischung von .Net- und ObjC-Typen. Ich habe da ein paar Ideen, aber es ist immer noch eine ziemliche Aufgabe. Ansonsten, yep: MT wird mit vielen Bindungen geliefert und bedeutet (per Hand oder mit einem Werkzeug), deine eigenen zu erstellen :) –

Verwandte Themen