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

в 18:57, , рубрики: Google, iOS, Yandex, перевод, разработка под iOS, метки: , , ,

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

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

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js