Pull to refresh

Titanium Cloud Service: отправка писем без вызова email dialog

Reading time 3 min
Views 2.7K
Titanium Cloud Service

Titanium Cloud Service — является простым и удобным способом избежать создания сервера для работы с мобильным приложением, воспользовавшись уже готовыми решениями от Appcelerator.



Cloud Service поддерживает использование Push Notifications, отправки почтовых сообщений, хранение большого объема фотографий и многое другое.

Следует отметить, что существует несколько тарифных планов для Cloud, но для начала работы бесплатной версии более чем достаточно. Данная версия предоставляет такие возможности как: 5 миллионов Push Notifications, 5 миллионов API вызовов, 20 гигабайт свободного места на сервере, 100 тысяч почтовых писем в месяц, что, на мой взгляд, очень неплохо.



Кроме того, существует 2 версии работы с Cloud — это Production и Development, что, несомненно, очень удобно. При этом, к примеру, при компиляции приложения на подключенный к компьютеру девайс и его использовании приложение будет расцениваться как development версия, в ином случае — как production.

Подключение к проекту — это просто

В свою очередь, подключение Cloud к проекту Titanium Studio элементарно. В файле tiapp.xml необходимо установить Enable значение для Cloud Services. В проект будут добавлены необходимые ключи, которые также будут отображаться на странице проекта на https://cloud.appcelerator.com.

Управление данными

Итак, для работы с проектом необходима его настройка на странице Cloud. Всё что будет необходимо — это вкладки: settings, email templates, и создание пользователя в app management. Все действия необходимо продублироваться в двух версиях проекта (production и development).

То, что понадобится для отправки email — это работа с полями SMTP Settings. Здесь username — это email с которого будут отправляться письма, а password — это пароль от данного email. TLS необходимо установить в true. В этом примере я буду использовать gmail smtp address, который выглядит следующим образом smtp.gmail.com, можно использовать 587 port.

Перейдем ко вкладке email templates. Здесь создается шаблон сообщения, который будет передаваться конечному получателю. Опишу небольшой пример:

name: order (необходимо для обращения в коде приложения)
subject: Order from app (тема письма)
body: (шаблон тела письма)
<!DOCTYPE html>
<html lang="en">
    <head>
    <body>
        Name: {{name}}<br />
        Surname: {{surname}}<br />
        <br /><br />
        {{order}}
    </body>
</html>

Как можно заметить, в теле письма присутствует 3 переменные, которые будут заполняться данными в ходе работы приложения.

Наконец, перейдем к последнему этапу — создание пользователя. Пользователь необходим для обращения к Cloud из приложения и передачи конкретной информации. Нажимаем кнопку Create user и заполняем поля данными, которые далее будут использоваться в коде приложения, а конкретно, будет необходим username и password.

Работа с Titanium.Cloud API

Перейдем к работе с API. Для начала подключим необходимую библиотеку в коде и сделаем вход пользователя, который был создан в Cloud немного выше.

var Cloud = require('ti.cloud');
Cloud.Users.login({
	login : 'username',
	password : 'password'
	}, function(e) {
		if (e.success) {
        ...
		}
	}
});

Если вход пользователя был произведен успешно, следует начать загрузку изображений на сервер. На данном этапе следует сохранить id изображения в какую-либо переменную, для дальнейшей проверки данного изображения на его обработку сервером, т.к. это может занять разное количество времени и может произойти ситуация, когда программа отработает быстрее чем сервер.

var currentItem = Ti.Filesystem.getFile(pathToFile);
var blob = currentItem.read();

Cloud.Photos.create({
		photo : blob
	}, function(e) {
		if (e.success) {
			//отображение прогресса загрузки изображения в процентах (в созданный заранее label)
			Cloud.onsendstream = function(e) {
				messageLabel.text = String.format(L('uploading_photo'), + (Math.floor(e.progress * 0.5 * 100) * 2) + '%');
			};
			var photo = e.photos[0];
			id = photo.id;
			...
		} else {
			alert(e.message);
		}
});

Теперь, непосредственно, произведем проверку на обработку изображения сервером и если всё успешно, то перейдем к функции отправки электронного письма.

Cloud.Photos.show({
	photo_id : id
	}, function(e) {
		if (e.success) {
			Cloud.ondatastream = function(e) {
				messageLabel.text = L('server_processes_data');
			}
			var photo = e.photos[0];
			if (photo.processed) {
				sendEmail();
			}
});

Рассмотрим функцию отправки письма. Здесь template — это name на странице Cloud во вкладке email templates, recipients — получатель письма. Name, surname и order описанные в email templates шаблоне переменные, соответственно.

function sendEmail() {
	Cloud.Emails.send({
			template : 'order',
			recipients : 'someone@gmail.com', //to whom
			name : name,
			surname : surname,
			order : order
		}, function(e) {
			if (e.success) {
				...
			} else {
				alert(e.message);
			}
		});
}

Письма доходят быстро, без каких-либо задержек.

Таким образом, Appcelerator Cloud удобен для подключения к проектам и дальнейшего использования, а его бесплатная версия обладает всеми возможностями для ознакомления и начала работы с данным продуктом.
Tags:
Hubs:
+3
Comments 0
Comments Leave a comment

Articles