Отправка автоматического SMS в iOS с Delphi XE8
Можно ли отправлять автоматические текстовые сообщения в iOS с Delphi Xe8? Я нашел примеры для этого в Android, но ни одного в iOS. Нужно ли мне импортировать заголовки для использования в Delphi или уже есть встроенная функциональность для этого?
2 ответа
Нет. Системы SMS на двух платформах работают по-разному.
На Android можно отправлять смс программно и полностью автоматически.
В iOS (и WinPhone) вы можете только предварительно составить SMS-сообщение, а затем передать его системному компоненту, чтобы он был представлен (системой) пользователю, чтобы он подтвердил, хотят ли они отправить сообщение или нет.
Код iOS для этого:
var sms := new MFMessageComposeViewController;
sms.messageComposeDelegate := self;
sms.recipients := ['7275']; // mobile #('s)
sms.body := 'The message to send';
presentViewController(sms) animated(true) completion(nil);
ПРИМЕЧАНИЕ. Этот код - ObjectPascal, но это RemObjects Oxygene, который компилируется непосредственно в платформу Cocoa и создает собственный код iOS, поэтому нет необходимости импортировать заголовки и т. Д. Чтобы преобразовать это в FireMonkey, вам нужно найти соответствующие объявления / заголовки в Delphi, при условии, что они предоставлены.
При преобразовании в Delphi это может помочь сравнить его с версией Objective-C этого кода, поскольку Delphi не предоставляет никакой расширенной поддержки синтаксиса, задействованного в вызовах инфраструктуры Какао. Например, установка свойства получателей в Objective-C:
sms.recipients = [NSArray arrayWithObjects: @ "7275", nil];
Дальнейшее обсуждение различий и того, как приведенный выше код Oxygene соответствует Objective-C, чтобы помочь в преобразовании в Delphi, содержится в сообщении в блоге, которое я написал о разработке приложения на основе SMS для iOS, Android (и WinPhone).
Для ios используйте dpf родные элементы управления ios:)
это моя проверенная функция ( dest номер находится в самом объекте...)
procedure SEND_SMS(NUMBER, TEXT: string);
{$IFDEF ANDROID}
var SmsManager: JSmsManager;
smsTo, txt: JString;
begin
SmsManager := TJSmsManager.JavaClass.getDefault;
smsTo := StringToJString(NUMBER);
txt := StringToJString(TEXT) ;
SmsManager.sendTextMessage( smsTo, nil, txt, nil, nil);
end;
{$ENDIF}
{$IFDEF iOS}
var sms: TDPFMessageCompose;
begin
sms := TDPFMessageCompose.Create(application);
SMS.MessageCompose( TEXT, [NUMBER] ) ;
sms.free;
end ;
{$ENDIF}
{$IF Defined(MSWINDOWS) }
begin
showmessage( 'sms ');
end;
{$ENDIF}