- PVSM.RU - https://www.pvsm.ru -
Добрый вечер,
Сегодня я хотел бы написать небольшую заметку о своем приложении, которое только что появилось в App Store. Оно выполняет всего одну функцию, но, как мне кажется, выполняет ее довольно хорошо.
Если заинтересовало, то добро пожаловать под кат.
В первую очередь я хотел бы рассказать про то, как переводчик устроен изнутри. Для того, чтобы предоставить лучшие результаты поиска было решено использовать совместно Google Translate и Яндекс. Переводчик. Яндекс закрывает большую часть российской аудитории, а Google отвечает за большое количество иностранных языков.
С документацией обоих сервисов можно ознакомиться тут:
— Яндекс [1]
— Google [2]
После того, как было решено, где брать перевод — встала следующая задача: как реализовать функцию 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 [3].
В этом проекте я использовал два сервиса, которые помогают отслеживать статистику по поведению аудитории.
Первый — довольно известный Flurry [4] о котором уже очень много написано.
Второй — более интересный и менее известный Crittercism [5]. Этот сервис позволяет собирать crash-логи с устройств, чтобы постоянно делать пользователей счастливыми.
Было использовано несколько open source проектов, которые многим будут полезны:
— JASidePanelController [6] (Боковые панели)
— Appirater [7] (Предложение оценить приложение)
— Block Alerts [8] (Помогает реализовать свой UI алертов)
На этом все.
Все желающие могут купить приложение по ссылке (66 рублей): itunes.apple.com/ru/app/translatify/id604352244?mt=8 [9]
PS: Прошу прощения, что не в тот хаб. Кармы не хватает.
Автор: itruf
Источник [10]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/ios/30371
Ссылки в тексте:
[1] Яндекс: http://api.yandex.ru/translate/doc/dg/concepts/api-overview.xml
[2] Google: https://developers.google.com/translate/v2/getting_started?hl=ru
[3] http://handleopenurl.com: http://handleopenurl.com/scheme/translatify
[4] Flurry: http://www.flurry.com
[5] Crittercism: https://www.crittercism.com
[6] JASidePanelController: https://github.com/gotosleep/JASidePanels
[7] Appirater: https://github.com/arashpayan/appirater
[8] Block Alerts: https://github.com/gpambrozio/BlockAlertsAnd-ActionSheets
[9] itunes.apple.com/ru/app/translatify/id604352244?mt=8: https://itunes.apple.com/ru/app/translatify/id604352244?mt=8
[10] Источник: http://habrahabr.ru/post/174215/
Нажмите здесь для печати.