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