unit global;
interface
uses
System.Classes, IdHTTP, SysUtils, FMX.Notification;
///
/// Процедура регистрации устройства.
///
///
/// ID регистрируемого устройства
///
///
/// Токен регистрируемого устройства
///
procedure RegisterDevice(DeviceID : string; DeviceToken : string);
///
/// Процедура отправки Push сообщения на сервер.
///
///
/// Текст отправляемого сообщения
///
procedure SendPush(MessageText : string);
///
/// Процедура вывода сообщения из приложения.
///
///
/// Текст выводимого сообщения
///
///
/// Число выводимое на иконку приложения
///
procedure ShowNotification(MessageText : string; BadgeNumber : integer);
const
// Доменное имя сайта
DOMAIN: string = 'http://example.ru/';
implementation
procedure RegisterDevice(DeviceID : string; DeviceToken : string);
var
// Данные для передачи скрипту
postdata: TStringList;
// Подключение для передачи данных
httpconnect : TIdHTTP;
begin
try
// Создаём подключение
httpconnect := TIdHTTP.Create;
// Указываем данные для отправки
postdata := TStringList.Create;
postdata.Add('action=register-device');
postdata.Add('did=' + DeviceID);
postdata.Add('token=' + DeviceToken);
{$ifdef ANDROID}
postdata.Add('platform=android');
{$else}
postdata.Add('platform=ios');
{$endif}
// Отправляем запрос
httpconnect.Post(DOMAIN + 'push.php', postdata);
finally
// Отключаемся и освобождаем память
httpconnect.Disconnect;
httpconnect.DisposeOf;
end;
end;
procedure SendPush(MessageText : string);
var
// Данные для передачи скрипту
postdata: TStringList;
// Подключение для передачи данных
httpconnect : TIdHTTP;
begin
try
// Создаём подключение
httpconnect := TIdHTTP.Create;
// Указываем данные для отправки
postdata := TStringList.Create;
postdata.Add('action=send-push');
postdata.Add('text=' + MessageText);
// Отправляем запрос
httpconnect.Post(DOMAIN + 'push.php', postdata);
finally
// Отключаемся и освобождаем память
httpconnect.Disconnect;
httpconnect.DisposeOf;
end;
end;
procedure ShowNotification(MessageText : string; BadgeNumber : integer);
var
NotificationC: TNotificationCenter;
Notification: TNotification;
begin
// Создаём центр уведомлений и уведомление для отправки
NotificationC := TNotificationCenter.Create(nil);
Notification := NotificationC.CreateNotification;
try
// Если центр уведомлений поддерживается системой
if NotificationC.Supported then
begin
// Устанавливаем текст сообщения
Notification.AlertBody := MessageText;
// Включаем звук при выводе сообщение
Notification.EnableSound := true;
// Устанавливаем цифру на иконке приложения
Notification.Number := BadgeNumber;
NotificationC.ApplicationIconBadgeNumber := BadgeNumber;
// Выводим сообщение из приложения
NotificationC.PresentNotification(Notification);
end;
finally
// Очищаем переменные
Notification.DisposeOf;
NotificationC.Free;
NotificationC.DisposeOf;
end;
end;
end.