使用Delphi XE8在iOS中发送自动短信

时间:2015-05-22 17:14:57

标签: ios delphi sms delphi-xe8

是否可以在iOS中使用Delphi Xe8发送自动短信? 我在Android中找到了这样做的示例,但在iOS中没有。我是否需要导入要在Delphi中使用的标头,或者是否已经内置了这些功能?

2 个答案:

答案 0 :(得分: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不提供对Cocoa框架调用中涉及的语法的扩展支持。例如,在Objective-C中设置收件人属性:

sms.recipients = [NSArray arrayWithObjects:@“7275”,nil];

进一步讨论差异以及上述Oxygene代码如何与Objective-C相对应,以帮助转换为Delphi,在a blog post I wrote about having developed an SMS based application for iOS, Android (and WinPhone)中。

答案 1 :(得分:1)

for ios使用dpf ios本机控件:)

这是我测试的功能(目标号码在对象本身......)

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}