Отправка автоматического 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}
Другие вопросы по тегам