Добрый вечер,
Сегодня я хотел бы написать небольшую заметку о своем приложении, которое только что появилось в 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: Прошу прощения, что не в тот хаб. Кармы не хватает.
Автор: itruf