Алекс Нестеров на Хабре выложил исходный код рейтинг-контрола для iPhone.

  • Может отображать текущий рейтинг, который в базе.
  • Позволяет пользователю устанавливать свой рейтинг.
  • Отслеживается с помощью делегатов.
  • Рейтинг в базе может быть float.
  • Округляется до половинки.
  • Пользовательский рейтинг может быть только int.
  • Значения, не попадающие в диапазон, режутся так, чтобы попасть в диапазон

Применение

  1. Реализовать протокол
    Rating Control for iPhone
  2. Вставить в родительский view.
    Rating control for iPhone

Скачать исходный код
Оригинал статьи

Previous ArticleNext Article
Технический директор IT-Dimension, компании-разработчика кросс-платформенного программного обеспечения

Leave a Reply

Your email address will not be published. Required fields are marked *

i.

iPhone разработка: Интегрируем In-App Purchases

Сегодня у нас статья Якова Ильина об In-App Purchases для iPhone-приложений.

Введение

In-App Purchases — это простой и удобный механизм для организации продаж своих приложений или дополнительных фич непосредственно из своего приложения. In-App Purchases легко встраивается и открывает для Вас новый канал продаж. Взаимодействие с App Store осуществляется с помощью StoreKit.framework, который поставляется вместе с SDK, начиная с версии 3.0.

Общая информация

In-App Purchases бывает трех типов:

  • Consumables
  • Non-Consumables
  • Subscriptions

Consumable – потребляемый тип. Purchase такого типа может покупаться несколько раз. Например, в игре Eliminate игрок покупает себе энергию, которая со временем растрачивается и приходится покупать ее заново, либо ждать три часа, пока энергия востановится.

Non-Consumable— непотребляемый тип. Purchase покупается только один раз. Его обычно используют для разблокировки новых тем, дополнительных уровней и т.п.

Subscription— подписка на что-либо. Например, Вы можете написать iPhone-приложение для Web-сервиса, в котором есть Premium аккаунт, открывающий дополнительные возможности. С помощью Subscription Вы сможете аккаунт активировать, скажем, на месяц или на год.

Реализовать In-App Purchases можно с помощью двух моделей:

  • Встроенная модель
  • Серверная модель

Встроенная модель позволяет разблокировать фичи. Как правило, использование данной модели побуждает разработчиков встраивать их в приложение зарание. При такой реализации, StoreKit отвечает только за оплату фичи. В общем случае, с помощью StoreKit мы можем узнать прошла ли покупка или не прошла.

Серверная модель является более гибкой. В модели принимают участие три сущности: iPhone-приложение, сервер Apple и наш сервер. Все новые фичи хранятся на нашем сервере, поэтому нет необходимости обновлять приложение при добавлении новых фич или продуктов. Работает модель следующим образом:

  1. iPhone-приложение запрашивает список продуктов у своего сервера,
  2. iPhone-приложение отображает новые продукты пользователю,
  3. Пользователь покупает (или не покупает 🙂 )
  4. iPhone-приложение запрашивает покупку у сервера Apple через StoreKit,
  5. StoreKit возвращает ответ,
  6. iPhone-приложение отсылает ответ на свой сервер
  7. Еще раз проверяется ответ (обязательно проверяется, что ответ пришел от Apple),
  8. После этого iPhone-приложение скачивает со своего сервера новый продукт.

В данном посте рассматривается встроенная модель.

Реализация

Работу встроенной модели In-App Purchases я продемонстрирую на тестовом примере AppPurchasesExample. Это небольшое iPhone-приложение с 3 окнами. Первое (оно же главное) окно будет доступно пользователю по-умолчанию. Это окно будет содержать информацию о двух других окнах, разблокировать которые можно только за деньги.

Шаг 1. Создание App ID

Заходим на iPhone Developer Program Portal и открываем вкладку App IDs:

В правом верхнем углу экрана нажимаем New App ID. Затем вводим информацию о приложении. Для своего примера я заполнил форму так:

Для создания Bundle Identifier Apple рекомендует использовать нотацию Reverse DNS, что гарантирует уникальность Вашего Identifier и избавит Вас от дальнейших проблем при публикации приложения.Очень Важно не использовать символ ‘*’ в Bundle Identifier. Если ввести ‘com.wordpress.indiedevelop.*’, то In-App Purchases работать не будет.

Далее необходимо включить In App Purchases для App ID. В списке App IDs, напротив нужного Bundle Identifier в графе Action следует нажать Configure. Появится форма Configure App ID, на которой необходимо включить checkBox ‘Enable In App Purchase’.

Шаг 2. Создание Development профиля
  1. В левом столбце нужно нажать на ‘Provisioning’ и перейти на вкладку ‘Development’.
  2. Нажать ‘New Profile’ и заполнить всю необходимую информацию. Поле Profile Name может быть любое (я записал ‘InAppPurchasesExample Dev’).
  3. В появившемся списке созданный профиль имеет статус pending. Нужно обновить страницу, либо перейти на другую вкладку и обратно, тогда профиль станет доступен для скачивания.
  4. Профиль можно скачивать и устанавливать в xCode. Для установки достаточно просто нажать на профиль двойным кликом, либо перетащить профайл на иконку xCode.

Если профиль установился правильно, тогда в xCode откроется Organizer и вы увидите примерно следующее:

Шаг 3. Создание приложения в iTunes Connect

Для того, чтобы протестировать наше In-App Purchase приложение, его нужно обязательно создать в iTunes Connect. Чтобы это сделать:

  1. Необходимо перейти в iTunes Connect и нажать ‘Manage Your Applications->Add New Application’.
  2. На вопрос ‘Does your product contain encryption?’ ответить отрицательно.
  3. Заполнить форму, где нужно указать имя приложения, описание, номер версии, категорию и т.д. Все достаточно тривиально. Затруднения может вызвать разве что поле ‘SKU Number’. Это поле должно быть уникальным, я ввел в нем ‘IAPEX’ (сокращение от In-App Purchases Example).
  4. На форме ‘Upload’ необходимо выставить флаг ‘Upload application binary later’. Все остальные параметры и формы для тестого примера никакого значения не имеют.
Шаг 4. Создание In-App Purchases в iTunes Connect
  1. В iTunes Connect необходимо нажать ‘Manage Your In App Purchases->Create New’ и выбрать необходимое приложение.
  2. Выбрать Bundle ID и заполнить инфрормацию о Purchase (тип, название, цену и т.д.) Также нужно ввести ‘Product ID’, который может быть произвольным, но я советую использовать Reverse DNS. Лучше всего Product ID формировать из Bundle ID вашего приложения и имени фичи. Для моего примера это выглядит так:

Для тестового приложения я создал два In-App продукта с Product Id ‘com.wordpress.indiedevelop.InAppPurchasesExample.f1’ и ‘com.wordpress.indiedevelop.InAppPurchasesExample.f2’. Обе фичи с типом Non-Consumables.

Шаг 5. Создание тестового пользователя

Для тестирования In-App Purchases необходимо создать хотя бы одного тестового пользователя. Делается это просто:

  1. В iTunes Connect необходимо перейти на ‘Manage Users->In App Purchase Test User’
  2. Нажать ‘Add New User’
  3. Ввести информацию о пользователе

E-mail пользователя не обязательно должен быть реальным. Для своего примера я создал одного тестового пользователя:

Важный момент. Если у Вас не закончен контракт с Apple, тогда In-App Purchase работать у Вас не будет. Для того, чтобы закончить контракт, необходимо указать Contact Info, Bank Info и Tax Info.

Шаг 6. Программирование

Для своего тестового примера я создал каркас проекта и User Interface:

Для работы с App Store я рекомендую использовать MKStoreKit, разработанный в 2009 году разработчиком Кумаром (Mugunth Kumar). Данный набор классов значительно облегчит работу со StoreKit. Кроме MKStoreKit, в проект необходимо добавить StoreKit.framework.

В своем примере я использую слегка модернизированную первую весрию MKStoreKit. Для удобства я добавил к классу MKStoreManager делегат следующего вида:

@protocol MKStoreKitDelegate @optional
- (void)productAPurchased;
- (void)productBPurchased;
- (void)failed;
@end

Делегату посылается сообщение productAPurchased когда куплена фича 1, productBPurchased — когда куплена фича 2 и failed — когда пользователь либо отменил покупку, либо покупка не прошла.

Класс-Singleton MKStoreManager является основным в MKStoreKit. Так выглядит его объявление:

@interface MKStoreManager : NSObject<SKProductsRequestDelegate> {
    ...
}

// делегат
@property (nonatomic, retain) id<MKStoreKitDelegate> delegate;
// продукты, доступные для покупки
@property (nonatomic, retain) NSMutableArray *purchasableObjects;

// фабричный метод для Singleton
+ (MKStoreManager*)sharedManager;

// методы для покупки фич
- (void) buyFeatureA;
- (void) buyFeatureB;

// методы позволяют узнать куплена ли фича
+ (BOOL) featureAPurchased;
+ (BOOL) featureBPurchased;
...
@end

Рассмотрим использование класса на моем тестовом примере.

Сначала в файле MKStoreManager.m я прописал Product ID своих фич:

static NSString *featureAId = @"com.wordpress.indiedevelop.InAppPurchasesExample.f1";
static NSString *featureBId = @"com.wordpress.indiedevelop.InAppPurchasesExample.f2";

Также нужно проверить были ли куплены фичи программы. Основной класс примера унаследован от UIViewController, поэтому код проверки целесообразно встроить в метод viewDidLoad:

- (void)viewDidLoad {
  [super viewDidLoad];

  [MKStoreManager sharedManager].delegate = self; // назначаем делагата для объекта MKStoreManager

  if ([MKStoreManager featureAPurchased]) // если куплена фича 1
  {
    feature1Button.hidden = YES; // скрываем кнопку 'Купить фичу 1'
    seeFeature1Button.hidden = NO; // показываем кнопку 'Перейти на фичу 1'
  }

  if ([MKStoreManager featureBPurchased]) // если куплена фича 2
  {
    feature2Button.hidden = YES; // скрываем кнопку 'Купить фичу 2'
    seeFeature2Button.hidden = NO; // показываем кнопку 'Перейти на фичу 2'
  }
}

Внутри MKStoreKit информация о том, куплен ли продукт сохраняется через NSUserDefaults, поэтому при удалении приложения информация сбрасывается. Однако, пользователь не будет покупать фичи два раза, поскольку StoreKit откроет доступ к фиче бесплатно.

Дальше нужно реализовать методы ‘Купить’. Они привязаны к событию TouchUpInside соотвествующих кнопок:

-(IBAction)feature1ButtonPressed
{
  [self showLockView]; // показываем пользователю, что происходит загрузка
  [[MKStoreManager sharedManager] buyFeatureA]; // посылаем сообщение магазину 'Купить фичу 1'
}

-(IBAction)feature2ButtonPressed
{
  [self showLockView]; // показываем пользователю, что происходит загрузка
  [[MKStoreManager sharedManager] buyFeatureB]; // посылаем сообщение магазину 'Купить фичу 2'
}

Далее я реализовал методы делегата MKStoreKitDelegate:

// фича 1 куплена
- (void)productAPurchased
{
  [self hideLockView]; // скрываем отображение загрузки
  feature1Button.hidden = YES; // скрываем кнопку 'Купить'
  seeFeature1Button.hidden = NO; // показываем кнопку 'Перейти'
}

// фича 2 куплена
- (void)productBPurchased
{
  [self hideLockView]; // скрываем отображение загрузки
  feature2Button.hidden = YES; // скрываем кнопку 'Купить'
  seeFeature2Button.hidden = NO; // показываем кнопку 'Перейти'
}

// покупка не прошла, либо была отменена
- (void)failed
{
  [self hideLockView]; // скрываем отображение загрузки
}

Новые фичи реализованы в виде отдельных UIView под управлением UIViewController. Переход на новые фичи я реализовал с помощь UINavigationController:

// перейти на фичу 1
-(IBAction)seeFeature1
{
  [self.navigationController pushViewController:feature1ViewController animated:YES];
}

// перейти на фичу 2
-(IBAction)seeFeature2
{
  [self.navigationController pushViewController:feature2ViewController animated:YES];
}

Также при манипуляции с магазином можно добавить проверку на его доступность. Это делается так:

if ([SKPaymentQueue canMakePayments])
{
... // Отобразить магазин пользователю
}
else
{
... // Уведомить пользователя, что Purchases недоступны
}

Как видите все достаточно просто. Остается скопилировать и тестировать 🙂

Шаг 7. Тестирование

Чтобы протестировать In-App Purchases нужно скомпилировать, установить и запустить приложение. При тестировании следует помнить следующее:

  1. Тестировать Purchases можно только на устройстве.
  2. Перед тестированием необходимо выйти из iTunes на своем iPhone. Это делается через ‘Settings->Store->Sign Out’.
  3. При тестировании, в сообщениях с предложением купить фичу, будет появляться [Environment: sandbox] — это признак тестового режима.
  4. Тестировать можно только тест-аккаунтами (см. Шаг 5)
Тестовый пример InAppPurchasesExample

В результате у меня получилось приложение, которое может разблокировать два дополнительных окна. Это приложение можно использовать в качестве примера для создания своих In-App Purchase проектов.

Исходный код

Оригинал статьи в блоге автора.

Скриншоты:

К.

Кому в App Store жить хорошо. Магазинчик программ «У Стиви» глазами разработчика

Сегодня у нас статья хабрапользователя xzDeveloper об App Store.

В этой статье постараюсь кратко рассказать про свой полуторалетний опыт разработки под iPhone. И о том, кому же полезен App Store.

Часть 1. Действующие лица

Независимый разработчик

Моя позиция такова, и, надеюсь, многие согласятся, что успешный человек — это тот, кто занимается любимым делом, которое приносит доход, на который можно не только жить, но и отдыхать от работы. То есть, его трудовой вклад должен окупаться настолько, чтобы он полностью себя обеспечивал. Кроме дохода еще требуется саморазвитие, чтобы не отставать от темпов роста отрасли, быть всегда во всеоружии, насколько это возможно, чтобы не растерять главное: опыт, навыки, знания.

Много ли таких среди инди-разработчиков? Мне кажется, что нет. Напротив, даже очень и очень мало. Особенно в нашей стране. Попробуем разобраться, почему.

Многие слышали success story о том, как молодой человек загорается желанием и за неделю «в гараже» выдает на-гора супер-проект, о котором пишут новостные ленты, пестрит твиттер, который попадает в топы категорий, подкатегорий.

Обычно, за очень редким исключением, кроме минуты/дня/недели славы из этого ничего не получается. Что на первых порах молодой команде даже вредно.
О реальных цифрах знают далеко не все. Потому что далеко не все были в этом самом «топе». Иногда это даже проблема, этот «топ».

Если продукт попал в какой-либо топ, то пользователи будут считать, что разработчик «гребет бабло», и будут требовать соответствующей поддержки и отношения. Это может быть требование немедленно изменить функционал, как они желают, изменить дизайн, выпустить срочно обновление. По опыту скажу, что под «срочно» ими обычно подразумевается 2-3 дня, и если требование не будет выполнено, неминуемо последует «наказание» в виде негативного отзыва (зачастую очень агрессивного), плохой оценки, гневного письма. Про отзывы, рейтинги и пользователей подробнее расскажу ниже.

С другой стороны, положение в рейтинговой таблице влияет на продажи: приложения первой сотни покупают чаще. Просто потому что они на виду. Однако, точно оценить коэффициент, который привносится в продажи с помощью топа, сложно.

Итак, в глазах пользователей разработчик — миллионер. А на самом деле…

«Скока денег?»

Расскажу про русский топ на примере одного нашего приложения, т.к. «плавали, знаем». От штатовского наш топ отстает всего на порядок, как я полагаю, так что с большой натяжкой можно сказать, что сравнимо. А если учесть, что у тамошних разработчиков и потребности выше на порядок, то мы с ними в одной шкуре. Если я прав, выходит, что: «разработчик — он и в Африке разработчик».
Итак, каков объем нашего, русского отдела магазинчика? Максимум, что мы видели — это 750 закачек в сутки однодолларового приложения на первом месте. При этом в Top Grossing до первого места мы не добрались. Выходит, что потолок первого места русского топа скорее всего не ограничен одной тысячей закачек. НО это не каждый день.

Среднее количество закачек на первом месте — от 150 до 300. Конечно, зависит от приложения, от «соседей», сезона и т.п. Наблюдения велись в течение месяца (столько времени наше приложение продержалось в первой десятке, половину этого времени на первом месте).

Итого у нас вышло: потрачено на разработку 500 часов нетто (без перекуров и отвлечений), доход за 4 месяца продаж, за вычетом сбора Apple составил примерно 5 тысяч долларов. На рекламу не потрачено ни копейки, поддержка пользователей около 100 часов. Выходит, доходность меньше 10 долларов в час при условии постоянного нахождения в топе. Это приложение просто оказалось нужным и востребованным, его не понадобилось пиарить. А если добавить сюда расходы на рекламу, оплату электричества, трафика, хостинга, профит получится еще меньше.

В отличие от коллег, которые недавно рассказывали о своем опыте как о неудачном, мы считаем, что это пусть маленький, но успех.

Про «гаражные стартапы» все знают или слышали. Но где эти стартапы через год-два, если не находят инвестора? Так и здесь, в разработке под iPhone: часто это молодые люди еще без соответствующего образования, опыта (как программистского, так и организационного). Запала хватает обычно на одно-два приложения. Пусть очень хороших и востребованных публикой. А что дальше? Хорошо, если отобьются вложенные средства… А дальше глухой стеной встает предел компетентности/армия/апатия/необходимость или желание зарабатывать реальные деньги и спать ночью.

Фанаты

Есть люди, достаток которых позволяет им заниматься любой деятельностью без оглядки на бизнес-составляющую. Обычно они тратят в 10 раз больше на разработку, чем потом удается выручить. Редко, когда хобби приносит деньги. Это уже работа, если так.

Билет на WWDC-2010 можно было купить за 1600$ в течение всего лишь 8 дней. Разобрали, как пирожки. Сколько было инди-разработчиков там? Немного. А российских разработчиков? Единицы. А кто же все те люди? Это были журналисты, люди из первого абзаца, а также те, кто смог убедить руководство своей компании оплатить такую командировку (+ билеты + недельное проживание).

Это я к тому, что есть целый пласт людей, которые занимаются разработкой (иногда даже это у них получается), просто потому что им хочется это делать, потому что они фанаты Apple или хотят доказать всем, что «они смогут». И они не расстраиваются из-за неудач (потому что на счетах есть на что жить и без игры в разработку).

Ребята из рекламных роликов Apple

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

Apple заинтересованы в магазине приложений не как в средстве своего дополнительного дохода, а как в механизме привлечения покупателей для своих устройств. Поэтому им выгодно, чтобы было много разных приложений, чтобы сказать, что у них уже 250 тысяч программ в магазине и столько-то миллиардов закачек.

Может, все и задумывалось для людей: много хороших, нужных, качественных программ… А получилось, как всегда: отдел маркетинга требует большие цифры, горе-разработчики ноют, что цензоры не пропускают их мусор, шумят в блогах. Где уж тут качество будет. В итоге все стали заложниками ситуации, когда всем одновременно мил не будешь.

Такова мощь и бесполезность сегодняшнего App Store: разработчики не могут заявить о себе, утопая в тысячах поделок и клонов, пользователи дальше 100 первых приложений не видят ничего, да если и захотеть, то найти что-либо подходящее и стоящее не всегда под силу.

Издатели (publishers)

Эти товарищи зарабатывают на процентах с продаж чужих приложений. Это почти все известные бренды App Store. Они отбирают самое лучшее, что есть. Иногда сами делают заказы. Не скупятся на промокампании. В итоге разработчик, обратившийся к паблишеру получает ту же зарплату, что и в офисе. Сама компания-издатель обычно не маленькая, и огромные доходы расходятся на зарплаты и рекламу.

Вывод

По нашим наблюдениям и рассуждениям выходит, что нет счастливчиков, которые особо не напрягаются и прилично зарабатывают в App Store.

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

Не хочу отговаривать никого от желания заработать в App Store, просто не думайте, что это так просто. Легких денег не бывает, каждый грош зарабатывается потом и кровью.

Что делать независимым разработчикам?

Учиться, учиться и учиться.
Не расстраиваться из-за неудач.
Помнить, что всех денег не заработать, поэтому уделять внимание здоровью и время отдыху.
Не играть в большую компанию, когда вас еще очень мало.
Собрав приличное портфолио, начинать искать заказчиков.

Далее о том, что ждет тех, кто решился примерить на себя роль Apple Developer.

Часть2. Путь Разработчика

Что такое разработка для App Store? Есть несколько несложных «квестов», выполнения которых (как на каждом углу написано) вроде бы достаточно для того, «чтобы зашибать неплохие деньги»:

  • Наличие программно-технических средств. Нужен Mac, iPhone SDK, устройство для тестирования.
  • Регистрация участника Apple Developer Program. 99$ в год.
  • Идея программы. Обычно проблем ни у кого не возникает. Все гении.
  • Реализация. Требуется умение программировать, понимать технические тексты на английском.
  • Публикация. Угодить цензорам, знать в общих чертах, о чем сказано в iPhone Developer Program License Agreement
  • Реклама
  • Поддержка пользователей
  • Получение прибыли. Да, заработанные кровные еще надо получить.

Подробнее на некоторых пунктах остановлюсь ниже.

Разработка

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

Скажу лишь, что какова бы ни была дружественна к пользователю среда разработки, сколько бы библиотек с готовыми алгоритмами и функциями ни было уже написано, без базовых знаний по предмету лучше не пытаться «городить огород». По tutorial’ам конкретную нужную программу не написать. По документации к SDK не понять, что деление на 0 не очень хорошо.

Самое сложное, на мой взгляд, в разработке под iPhone — это управление памятью (retain, release). Надо следить за всей выделенной динамической памятью. Ну нет там «сборщика мусора»!

Веселая карусель прошивок

Все разработчики «любят» Apple за их любовь к деньгам пользователей: выход новых прошивок побуждает людей покупать новые устройства, т.к. на старых моделях новая прошивка уже не поддерживается. В чем же проблема у разработчика?

В прошлом году с выходом iPhone OS 3.0 особых проблем не было: старая прошивка (2.x) поддерживалась SDK. С выходом прошивки 4.0 и соответствующего SDK случилось страшное: для поддержки работы своего приложения на всех поддерживаемых устройствах разработчику для тестирования необходимо иметь 2(!) iPhone: один с прошивкой 3.1 и один с прошивкой 4.х Потому что ни один SDK не предусматривает полноценную поддержку обеих этих прошивок одновременно: нельзя выставить, например, Base SDK 3.1 и ниже в новом Xcode. Убрав поддержку iPhone OS 2.x явно, ребята из Купертино не явно очень сильно надавили на разработчиков и на пользователей по поводу iPhone OS 3.1.

Не вдаваясь в детали: поддерживать в программе полноценную работу сразу двух прошивок очень сложно.

С выходом iPad и iPhone 4 теперь, если есть желание делать универсальное приложение, придется позаботиться обо всех возможных расширениях экранов и куче наборов иконок для рабочего стола.

Работа приложений на устройствах. Jailbreak

Еще один «подарок» от Apple для разработчиков. Иногда операционная система iPhone не справляется со своими задачами. В результате, если в этот момент была запущена программа и она «упала», в глазах пользователя виноват будет создатель программы, не Apple, не Foxconn.

Если пользователь сделал Jailbreak, потому что «так делают все хакеры/друзья сказали», а не потому, что это ему действительно нужно, и накидает в аппарат кучу софта, описаний которого даже не читал, потому что «халява» и одна из этих программ «упала» во время использования, виноват кто? Конечно, не Jailbreak или дефицит системной памяти в алюминиевом iPhone. Ну, вы поняли.

Публикация

Цензоры. Те времена, когда давали абсурдные отказы в публикации, вроде бы прошли. На все про все обычно* уходит неделя.

Хотя, был один случай месяца три назад. Захотели мы реализовать функцию, для работы которой требовалось использование некоторых незапрещенных функций ядра. Повесили кнопку, на которой написали название функции. Ответ цензора: «Такой функционал в SDK не предусмотрен», хотя очень похожая программа от другого разработчика продавалась как ни в чем не бывало. Показывать пальцем не стали, пришлось убрать кнопку (функцию-то мы оставили, сделав автоматической). И как же обидно стало, когда по прошествии двух месяцев программ с такой функцией, описанием и даже названием стало прибывать!

* Сроки рассмотрения всегда плавающие. Даже нечего сказать пользователям, которые спрашивают о дате выхода обновления. От недели до месяца. От сложности приложения не зависит. Обновление это или новое приложение — роли не играет.

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

Реклама

Без рекламы никуда. Редко-редко ваше супер-пупер-замечательное приложение заметят просто так.

Есть множество способов раскрутки, один из них — это публикация обзора программы в профильных СМИ.
Как вы думаете, каким образом в популярных новостных лентах и порталах оказываются обзоры программ из App Store? Причин не так уж и много, вот те, что я пронаблюдал:

  • Разработчик заплатил за обзор денег (не знаю сколько, за деньги не публиковались).
  • Портал малопосещаем, ньюсмейкеров не хватает, опыта нет и обзор публикуется по принципу «хоть что-то».
  • По знакомству.
  • Приложение находится в штатовском «топе».

Еще можно пиариться в форумах и темах на пиратских трекерах. Но, думаю, это крайне неэффективно. Разве что ради обратной связи.

Поддержка пользователей. Отзывы и оценки

Если приложение имеет больше одной кнопки и вы не гуру юзабилити — придется заниматься поддержкой. Для игр, может, и не так актуально. Про работу службы поддержки будет отдельная статья.

Обратная связь

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

Есть такой класс приложений — розыгрыши. Одно из таких — «Поиск местонахождения сотового телефона по номеру». Суть в том, что «ведущий» запускает приложение, просит жертву розыгрыша сказать свой номер телефона, вводит в программу — и iPhone определяет место по GPS. Т.к. жертва розыгрыша находится там же, где и ведущий, программа определяет всего лишь свое собственное местоположение. Честное описание в этих приложениях всегда присутствует. Вот типичный отзыв для таких приложений: «РАЗВОД! НЕ ПОКУПАЙТЕ! Какие дебилы вывели в топ это дерьмо?» Оценки все единицы. Приложение обычно несколько дней в топе. Разработчик заработал свои «грязные» деньги. А пользователи раскрывают свою суть. Кто вывел в топ? Да тот человек и ему подобные и вывели.

Что удручает — так это мат и оскорбления в отзывах в адрес как разработчика, так и других товарищей, оставивших отзыв и позволивших себе не согласиться с предыдущим. Таковы вы, пользователи продукции Apple? Культурные и грамотные? Матерятся иногда даже с ошибками.

Что интересно, отзывы люди не читают, описание — тоже. Смотрят только на иконку и название. Отзывы — это как будто такое место с режимом write-only.

Оценки

Если приложение простенькое, делает тихо свою работу, то ни отзывов, ни оценок у него не будет. Это также может означать, что оно вовсе не продается.

Если приложение достаточно сложное, но дешевое — ждите кучи единиц: чтобы им пользоваться, зачастую нужно прочитать хотя бы аннотацию. Поставить единицу, не разобравшись, проще, чем что-либо читать. У таких приложений обычно поровну положительных и отрицательных оценок.

Исключительно отличные оценки есть только у простых красивых несложных игрушек.

Может, выводы, которые можно из этого сделать о публике, и грустные, но такова реальность. Если кого-то успокоит, то в Штатах с этим намного хуже. Хотя это выборка только по магазинчику.

Гонорар. «Сундук Кащея»

Говорим про Россию. Деньги от Apple приходят не сразу, а только после их отчетного периода, обычно не раньше, чем через 45 дней, и если набралось не меньше пары сотен долларов. Не во всех российских банках эти деньги без проблем зачислят на счет физического лица. Особенно, если денег много (наверное, должно быть столько, чтобы финмониторинг включился).
Т.к. сообщений о таких случаях не поступало, это значит, что либо у кого-то такое случилось и он об этом никому не рассказал, либо такого не случалось, либо счет у человека не в России.

Издержки работы юр. лица (особенно когда разработчику еще нет 18-ти) должны быть всем понятны. Возможно ли вообще честно получить хорошие деньги из-за границы? Что косвенно подтверждает мое предположение о том, что нет успешных независимых разработчиков (по крайней мере в России).

Заключение

Разработчикам: не стесняйтесь обмениваться опытом. Есть несколько русскоязычных сайтов по iPhone-тематике для разработчиков. В мечтах, конечно, русский stackoverflow.com. Если кто знает что-то подобное для русскоговорящих, советуйте всем своим знакомым разработчикам.

Начинающим разработчикам и тем, кто спамит в App Store: не плюйте в колодец…

Пользователям: читайте хотя бы аннотацию к приложению перед покупкой. И не думайте, что мы на вас наживаемся. Бывает мы ночами не спим, отвечая на ваши письма за куда меньшие деньги, чем можно заработать в уютном офисе.

Источник.