Трудности перевода

от автора

Добрый вечер,

Сегодня я хотел бы написать небольшую заметку о своем приложении, которое только что появилось в 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/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *