2009-12-04 8 views
17

MonoTouch кажется отличной платформой для разработки iPhone, но я беспокоюсь о ее развертывании в Apple Store. Есть ли примеры приложений, построенных с ним, которые в настоящее время доступны в iTunes?Является ли MonoTouch жизнеспособной платформой для разработки iPhone?

Мы начинаем новый проект для iPhone, и хранение всего стека на C# будет отличным, но мы не хотим подвергать риску быть отвергнутым из магазина Apple из-за MonoTouch.

Я читал о нескольких играх, в которых в настоящее время используется моно (не MonoTouch) для 3D-графики, но ничего не могу найти о MonoTouch.

+0

Кажется дубликат: http://stackoverflow.com/questions/1583856/is-monotouch-worth-the-cost-or-should-i-just-learn -объектив-c –

+0

Похоже, что основным моментом этого вопроса является сравнение стоимости владения monotouch vs learning obj-c. Основное внимание уделяется использованию монотота в реальном мире. Я получаю сходство, но, я думаю, ответы будут разными. –

+0

Плохая новость об этом: http://stackoverflow.com/questions/2604033/is-monotouch-now-banned-on-the-iphone –

ответ

55

Выбирая это на моем телефоне, сделайте это немного кратким - извиняйтесь за это.

В любом случае:

- Как сказал в предыдущем ответе, были MonoTouch приложения выпущен в App Store. Будь то два или баджон, это не так важно. Разница между одним и нолем бесконечна - ответ однозначен: Да, Apple одобрит приложения MonoTouch.

- MonoTouch играет по правилам Apple. Он выплескивает собственные биты. Нет никакой интерпретации кода, и нет JITting. Ваше приложение MonoTouch представляет собой набор, как и любой другой, и содержит собственный бинарный файл, как и любой другой.

- Приложения MonoTouch - это больше, чем если бы они были написаны с помощью стека Apple. Это связано с тем, что ваше приложение MonoTouch полагается на подмножество структуры Mono/.Net. В этом отношении, однако, как только вы перейдете к кораблям, нет ничего особенного в приложении MonoTouch. Я работал в компании, где мы создали наши приложения (разработанные с использованием стека Apple) против нашей пользовательской инфраструктуры. Это увеличило размер наших приложений, но также сократило время производства (и это всегда компромисс, не так ли?). Кроме того, размер пакета приложений сразу после компиляции может быть обманчивым. Поскольку пакеты упакованы в App Store, размер значительно уменьшается - вы можете легко написать приложение MonoTouch, которое упадет ну в пределах допустимого предела размера для приложений, поставляемых OTA (я поднимаю это, потому что это вопрос MT n0obs (по праву) спрашивать). Таким образом, у Apple нет реальной причины отклонения в зависимости от размера.

- Независимо от того, является ли это MonoTouch или обычным внутренним фреймворком, подобным тому, с которым я работал/работал, материал MonoTouch при отправке с вашим приложением - это только другая структура, которая могла быть написана в Objective- C.

- Если вы обеспокоены настройкой своего приложения для распространения с использованием всего стека MonoTouch и как это может повлиять на ваши шансы на одобрение, вы можете сказать MonoDevelop (или утилиту mtouch из командной строки) для вывода Xcode проект. Вы увидите, что ваш код был преобразован - вы будете смотреть на собственную сборку (а не на какой-то вкус IL). Вы можете создавать и запускать свое приложение MonoTouch прямо из Xcode, и к этому моменту MonoTouch в основном не работает (за исключением рамки, которую вы создаете против (например, MapKit)).

По какой-то причине все это беспокоит очень маленькое, но вокальное подмножество iPhone-разработчиков, которые по какой-то причине не выдерживают мысли людей, которых они не знают, используя другой инструмент для создания приложений. Но их ненависть не меняет простой факт, что Apple приняла приложения MonoTouch (и приложения Unity задолго до этого).

Основная причина, по которой вы собираетесь отклонить MT-приложения, - это то, что MT-разработчики, по моему опыту (я разговаривал с некоторыми из них, после нескольких разговоров, размещения на форумах, списков рассылки здесь ...), разве они еще не научились разрабатывать приложение для iPhone iPhone. Это то, что разработчики iPhone должны делать нерегулярность , как они пишут свои приложения. MonoTouch не является препятствием - он знает, например, что Apple хочет, чтобы ваше приложение выглядело определенным образом и работало определенным образом - оно должно выглядеть и чувствовать себя и вести себя как другие (хорошие) приложения для iPhone, и не должно среди примеров попыток написать настольные приложения для телефона (где ваш средний разработчик делает свою первую ошибку при переходе на мобильную разработку).

В конечном счете, ваш инструмент выбора не будет иметь значения до тех пор, пока он создает биты, которые играют по правилам Apple (например, MonoTouch). Настоящим препятствием является изучение iPhone-дизайна приложения.

. Разработчики приложений .Net, будь то в Windows, Windows Mobile или везде, где работает Mono (не MonoTouch), привыкли разрабатывать приложения в соответствии с их собственными вкусами. Это не летает в мире iPhone.

Вы можете безопасно использовать MonoTouch. Как было показано, Apple будет одобрить приложения MT.

То, что вам действительно нужно делать (опять же, независимо от того, какой из выпадающих стеков вы выбираете), читает документы Apple по дизайну iPhone и их рекомендации. Есть огромная толпа разработчиков из-за того, что они приписывают отклонения в своих приложениях Apple, будучи злым (или что-то еще - неосведомленные оправдания, в основном), когда правда в том, что их приложения являются мусором, и ясно, что разработчики не играли по правилам (или даже потрудитесь прочитать правила).

В конце концов, во многих случаях вы будете писать гораздо меньше кода при использовании MonoTouch, а стоимость для этого - это более крупный пакет приложений (который, как я сказал, выйдет очень разумно, после того, как он был застегнут для распространения).

Это не проблема. С 3g пользователи не потеют загрузку приложений размером 2-3 МБ. Если он достаточно мал, чтобы отправить OTA, все в порядке. И в тех случаях, когда ваше приложение выходит за лимит, вероятно, встроенные ресурсы (медиа-изображения, видео и т. Д.) - это то, как пакеты обычно набухают до размеров Wi-Fi), и это то, с чем приходится сталкиваться разработчикам Objective-C , так что это не проблема MonoTouch.

Таким образом, игнорировать ненавистник (которые даже не пытались MonoTouch или надоевшими, чтобы узнать, как она работает), и будьте уверены, что, если ваше приложение соответствует рекомендациям Apple, нет нет оснований для их отвергать Это. Это не означает, что ваше приложение гарантировано при принятии, если вы его правильно разработали (многие приложения отвергаются без видимых причин), но вы можете более или менее полагаться на себя с разработчиками, используя инструменты Apple.

Надеется, что это помогает :)

+0

Рори, большое спасибо за ответ! Это идеально для меня: хороший анализ текущих фактов вокруг monotouch и компромиссы относительно платформы. –

+1

Рад помочь ... –

+6

Просто, чтобы вскочить на ваш комментарий о создании * хорошего приложения для iPhone - я думаю, что существует так же ужасное приложение для iPhone с Obj-c, как и для Monotouch. Просто их часто забывают, когда создается красивое приложение. И до сих пор - красивого примера Monotouch не было создано, поэтому люди называют его грязным и обвиняющим .Net ребята за то, что они не понимают платформу (верно это или нет). Я уверен, как только люди уделит больше времени тому, чтобы Monotouch разрабатывал красивые приложения, вот когда Monotouch будет интересовать больше людей. – chrisntr

10

Сообщество MonoTouch поддерживает list of MonoTouch applications, которые доступны сегодня в Apple Store и написаны с использованием MonoTouch.

+0

Итак, до сих пор было создано два приложения - одно из которых не похоже на то, что оно принимает преимущество аппаратного обеспечения iPhone значительно больше, и тот, который, вероятно, будет удален, как только Hasbro поймает его. Хлоп. – bpapa

+4

@bpapa Два приложения менее чем через два месяца после выпуска фреймворка, включая утверждение AppStore. Какой у вас вопрос? –

+0

Что очень мало доказательств того, что MonoTouch является жизнеспособной платформой для разработки iPhone. Знаешь, обращаясь к заданному вопросу. – bpapa

3

Платформа разработки игр unity использует одну и ту же базовую базу для моно-сенсорного кода для поддержки C# (и внесла свой вклад в проект).

+0

Именно это я и подразумевал под «играми в моно». Я забыл название платформы. Я предполагаю, что это доказывает, что у Apple нет проблем с монокомпилятором, но он ничего не говорит о привязках к сенсорному интерфейсу. –

+0

Они не компилируются в CL, так как это запрещено Apple, и, согласно документации на моноточку, они привязаны ко всем API-интерфейсам iPhone. – Oded

+0

@Oded - привязки довольно тщательные, и вы можете легко создавать новые привязки (включая привязки к вашим собственным библиотекам, что довольно круто и демонстрирует гибкость MT). Одна вещь, которую они * не * связывают (пока) - это CoreData, но это вызов, который выходит за рамки простых привязок. Чтобы сделать CoreData * хорошо *, вам также нужно будет поиграть с инструментами CoreData от Apple. Одна общая проблема заключается в смешении типов .Net и ObjC. У меня есть некоторые идеи, но это все еще довольно сложная задача. В противном случае, yep: MT поставляется с привязками в изобилии и средствами (вручную или с помощью инструмента), чтобы создать свой собственный :) –

Смежные вопросы