-1

Delphi Xe8 を使用して iOS で自動テキスト メッセージを送信することは可能ですか? Android でこれを行う例は見つかりましたが、iOS では見つかりませんでした。Delphi で使用するためにヘッダーをインポートする必要がありますか、それとも機能が組み込まれていますか?

4

2 に答える 2

2

いいえ。2 つのプラットフォームの SMS システムの動作は異なります。

Android では、SMS をプログラムで完全に自動的に送信できます。

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];

Delphi への変換を支援するために、違いと上記の Oxygene コードが Objective-C にどのように対応するかについての詳細な説明は、iOS、Android (および WinPhone) 用の SMS ベースのアプリケーションを開発したことについて書いたブログ投稿にあります

于 2015-05-22T23:31:26.083 に答える
1

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}
于 2016-03-23T15:59:54.887 に答える