Сегодня я хотел бы написать небольшую заметку о своем приложении, которое только что появилось в App Store. Оно выполняет всего одну функцию, но, как мне кажется, выполняет ее довольно хорошо.
Если заинтересовало, то добро пожаловать под кат.
Движок
В первую очередь я хотел бы рассказать про то, как переводчик устроен изнутри. Для того, чтобы предоставить лучшие результаты поиска было решено использовать совместно Google Translate и Яндекс. Переводчик. Яндекс закрывает большую часть российской аудитории, а Google отвечает за большое количество иностранных языков.
С документацией обоих сервисов можно ознакомиться тут:
— Яндекс
— Google
После того, как было решено, где брать перевод — встала следующая задача: как реализовать функцию Copy-Translate (пользователь копирует в другом приложении текст и получает перевод в виде уведомления).
Это было решено следующим образом:
- (void) applicationDidEnterBackground:(UIApplication *)application { if ([[NSUserDefaults standardUserDefaults] boolForKey:@"copy_translate_enabled"]) { pastboardContents = [UIPasteboard generalPasteboard].string; __block UIBackgroundTaskIdentifier task; task = [application beginBackgroundTaskWithExpirationHandler:^{ ALog(@"System terminated background task early"); [application endBackgroundTask:task]; }]; // If the system refuses to allow the task return if (task == UIBackgroundTaskInvalid) { ALog(@"System refuses to allow background task"); return; } // Do the task dispatch_async(dispatch_get_global_queue(0, 0), ^{ for (int i = 0; i < 1000; i++) { [self checkPasteboard]; // Wait some time before going to the beginning of the loop [NSThread sleepForTimeInterval:1]; } // End the task [application endBackgroundTask:task]; }); } }
Решение, конечно, не идеальное, но в условиях запрета на работу в фоне имеет право на жизнь.
Так же были реализованы URL-схемы, чтобы другие разработчики в случае необходимости могли интегрировать свои приложения с Translatify (хотя, конечно, мало кто этим будет заниматься). Описание схем выложено на http://handleopenurl.com.
Аналитика
В этом проекте я использовал два сервиса, которые помогают отслеживать статистику по поведению аудитории.
Первый — довольно известный Flurry о котором уже очень много написано.
Второй — более интересный и менее известный Crittercism. Этот сервис позволяет собирать crash-логи с устройств, чтобы постоянно делать пользователей счастливыми.
Open source
Было использовано несколько open source проектов, которые многим будут полезны:
— JASidePanelController (Боковые панели)
— Appirater (Предложение оценить приложение)
— Block Alerts (Помогает реализовать свой UI алертов)
Заключение
На этом все.
Все желающие могут купить приложение по ссылке (66 рублей): itunes.apple.com/ru/app/translatify/id604352244?mt=8
PS: Прошу прощения, что не в тот хаб. Кармы не хватает.
ссылка на оригинал статьи http://habrahabr.ru/post/174215/
Добавить комментарий