公式のSDK / Cocoa Touchを使用してからプログラムでSMSを送信することが可能かどうか、またどのようにして送信できるかは誰かが知っていiPhone
ますか?
tools->script editor
てから、POSTリクエストでMailApp.sendEmail
APIを使用して電話番号にメールを送信できます。att'sはYOURNUMBER @ mms.att.net、tmobile'sはYOURNUMBER@tmomail.netです(すべて無料)
公式のSDK / Cocoa Touchを使用してからプログラムでSMSを送信することが可能かどうか、またどのようにして送信できるかは誰かが知っていiPhone
ますか?
tools->script editor
てから、POSTリクエストでMailApp.sendEmail
APIを使用して電話番号にメールを送信できます。att'sはYOURNUMBER @ mms.att.net、tmobile'sはYOURNUMBER@tmomail.netです(すべて無料)
回答:
iPhoneのプログラム内でSMSを送信できれば、バックグラウンドで人々をスパムするゲームを書くことができます。「この新しいゲームを試してみてください。私のboxxersをroxxersし、あなたもそうします!roxxersboxxers.com !!!!今すぐサインアップすると、3,200 RBを獲得できます。ポイント!!」
Appleには、自動化された(または部分的に自動化された)SMSおよびダイヤル操作に対する制限があります。(ゲームが代わりに特定の時間に911をダイヤルした場合を想像してください)
あなたの最善の策は、オンラインSMS送信サービスを使用するインターネット上に中間サーバーをセットアップし、完全な自動化が必要な場合はそのルートを介してSMSを送信することです。(つまり、iPhone上のプログラムがUDPパケットをサーバーに送信し、サーバーが実際のSMSを送信します)
ただし、iOS 4ではviewController
、アプリケーションにインポートできるようになりました。SMSフィールドに事前入力すると、ユーザーはコントローラー内でSMS送信を開始できます。「SMS:...」URL形式を使用する場合とは異なり、これによりアプリケーションを開いたままにして、両方の toフィールドとbodyフィールドの。複数の受信者を指定することもできます。
これにより、ユーザーが明示的に気づかないうちにアプリケーションが自動SMSを送信することを防ぎます。それでも、iPhone自体から完全に自動化されたSMSを送信することはできません。ユーザーの操作が必要です。ただし、これにより、少なくともすべてのデータを入力でき、アプリケーションの終了を回避できます。
MFMessageComposeViewControllerのクラスが十分に文書化されており、チュートリアルは、それが実装するのがいかに簡単であるかを示しています。
iOS 5には、iPod touchおよびiPadデバイス用のメッセージングが含まれているため、私はまだこれをテストしていませんが、すべてのiOSデバイスがMFMessageComposeViewControllerを介してSMSを送信できる可能性があります。この場合、AppleはSMSサーバーを実行しており、セルラーモデムを持たないデバイスに代わってメッセージを送信します。
このクラスに変更はありません。
これで、使用しているメッセージメディアが件名または添付ファイルを受け入れるかどうか、およびそれが受け入れる添付ファイルの種類を確認できます。件名を編集して、メディアが許可するメッセージに添付ファイルを追加できます。
このクラスに変更はありません。
このクラスに変更はありません。
このクラスに変更はありません。
これはiOS 4を搭載していない電話では機能せず、iPod touchやiPadでは機能しないことに注意してください。ただし、おそらくiOS 5を除きます。これを使用する前に、デバイスとiOSの制限を検出する必要がありますコントローラ、またはアプリを最近アップグレードされた3G、3GS、および4つのiPhoneに制限するリスクがあります。
ただし、SMSを送信する中間サーバーでは、これらのiOSデバイスのすべてがインターネットにアクセスできる限りSMSを送信できます。そのため、多くのアプリケーションにとってはより良いソリューションである可能性があります。または、両方を使用し、デバイスがサポートしていない場合にのみオンラインSMSサービスにフォールバックします。
これは、まさにあなたが探しているものを実行するチュートリアルですMFMessageComposeViewController
。
http://blog.mugunthkumar.com/coding/iphone-tutorial-how-to-send-in-app-sms/
基本的に:
MFMessageComposeViewController *controller = [[[MFMessageComposeViewController alloc] init] autorelease];
if([MFMessageComposeViewController canSendText])
{
controller.body = @"SMS message here";
controller.recipients = [NSArray arrayWithObjects:@"1(234)567-8910", nil];
controller.messageComposeDelegate = self;
[self presentModalViewController:controller animated:YES];
}
そして、ドキュメントへのリンク。
https://developer.apple.com/documentation/messageui/mfmessagecomposeviewcontroller
MFMessageComposeViewController *controller = ...
いる人は、ifブロック内に配置することを検討することをお勧めします。(クラスメソッドは、テストを実行するためにインスタンスを持つ必要はありません)
http://blog.mugunthkumar.com/coding/iphone-tutorial-how-to-send-in-app-sms/
に私のラップトップで「502 Bad Gateway」と表示されています。リンクが壊れている可能性があります。
#import <MessageUI/MessageUI.h>
ヘッダーファイルにを含めるMFMessageComposeViewControllerDelegate
&UINavigationControllerDelegate
IBAction
メソッドでMFMessageComposeViewController
sayのインスタンスを宣言しますmessageInstance
[MFMessageComposeViewController canSendText]
if条件でテキスト使用を送信できるかどうかを確認するには、はい/いいえを返しますでif
条件これらの操作を行います。
最初にあなたの体を設定してくださいmessageInstance
:
messageInstance.body = @"Hello from Shah";
次に、メッセージの受信者を次のように決定します。
messageInstance.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321", nil];
次のようにデリゲートをmessageInstanceに設定します。
messageInstance.messageComposeDelegate = self;
最後の行でこれを行います:
[self presentModalViewController:messageInstance animated:YES];
presentModalViewController:animated:
廃止予定です。presentViewController:animated:completion:
代わりに使用してください。また、- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
結果を知りたい場合は、デリゲートメソッドを必ず定義してください。
sms:[target phone number]
URLを使用してSMSアプリケーションを開くことができますが、SMSの本文にテキストを事前に入力する方法は示されていません。
MacOSのプロセス間通信のシステムの1つはXPCです。このシステム層は、libSystemとlaunchdを使用したplist構造の転送に基づくプロセス間通信用に開発されました。実際、これは、辞書などの構造の交換を介してプロセスを管理できるインターフェースです。遺伝のため、iOS 5にもこのメカニズムがあります。
この紹介で私が何を意味しているのかすでに理解しているかもしれません。はい、iOSにはXPC通信用のツールを含むシステムサービスがあります。また、SMS送信用のデーモンを使用した作業を例示したいと思います。ただし、この機能はiOS 6で修正されていますが、iOS 5.0〜5.1.1に関連していることに注意してください。脱獄、プライベートフレームワーク、およびその他の違法なツールは、その悪用に必要ではありません。/ usr / include / xpc / *ディレクトリのヘッダーファイルのセットのみが必要です。
iOSでのSMS送信の要素の1つは、システムサービスcom.apple.chatkitです。そのタスクには、ショートテキストメッセージの生成、管理、送信が含まれます。制御を容易にするために、一般に利用可能な通信ポートcom.apple.chatkit.clientcomposeserver.xpcを備えています。XPCサブシステムを使用すると、ユーザーの承認なしにメッセージを生成して送信できます。
さて、接続を作成してみましょう。
xpc_connection_t myConnection;
dispatch_queue_t queue = dispatch_queue_create("com.apple.chatkit.clientcomposeserver.xpc", DISPATCH_QUEUE_CONCURRENT);
myConnection = xpc_connection_create_mach_service("com.apple.chatkit.clientcomposeserver.xpc", queue, XPC_CONNECTION_MACH_SERVICE_PRIVILEGED);
これで、XPC接続myConnectionがSMS送信のサービスに設定されました。ただし、XPC構成では、中断された接続の作成が提供されています。アクティブ化には、もう1つの手順を実行する必要があります。
xpc_connection_set_event_handler(myConnection, ^(xpc_object_t event){
xpc_type_t xtype = xpc_get_type(event);
if(XPC_TYPE_ERROR == xtype)
{
NSLog(@"XPC sandbox connection error: %s\n", xpc_dictionary_get_string(event, XPC_ERROR_KEY_DESCRIPTION));
}
// Always set an event handler. More on this later.
NSLog(@"Received a message event!");
});
xpc_connection_resume(myConnection);
接続がアクティブ化されます。現時点では、iOS 6はこのタイプの通信が禁止されているというメッセージを電話ログに表示します。次に、メッセージの送信に必要なデータを使用して、xpc_dictionaryと同様の辞書を生成する必要があります。
NSArray *recipient = [NSArray arrayWithObjects:@"+7 (90*) 000-00-00", nil];
NSData *ser_rec = [NSPropertyListSerialization dataWithPropertyList:recipient format:200 options:0 error:NULL];
xpc_object_t mydict = xpc_dictionary_create(0, 0, 0);
xpc_dictionary_set_int64(mydict, "message-type", 0);
xpc_dictionary_set_data(mydict, "recipients", [ser_rec bytes], [ser_rec length]);
xpc_dictionary_set_string(mydict, "text", "hello from your application!");
あと少しです。メッセージをXPCポートに送信し、配信されたことを確認してください。
xpc_connection_send_message(myConnection, mydict);
xpc_connection_send_barrier(myConnection, ^{
NSLog(@"The message has been successfully delivered");
});
それで全部です。SMSを送信しました。
MessageUI.Frameworkを追加し、次のコードを使用します
#import <MessageUI/MessageUI.h>
その後:
if ([MFMessageComposeViewController canSendText]) {
MFMessageComposeViewController *messageComposer =
[[MFMessageComposeViewController alloc] init];
NSString *message = @"Your Message here";
[messageComposer setBody:message];
messageComposer.messageComposeDelegate = self;
[self presentViewController:messageComposer animated:YES completion:nil];
}
とデリゲートメソッド-
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
didFinishWithResult:(MessageComposeResult)result {
[self dismissViewControllerAnimated:YES completion:nil];
}
このアプローチを使用できます。
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"sms:MobileNumber"]]
iOSは、アプリからメッセージアプリのメッセージ作成ページに自動的に移動します。URLのスキームはsms:で始まるので、これはメッセージアプリによって認識されて起動するタイプとして識別されます。
//Add the Framework in .h file
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
//Set the delegate methods
UIViewController<UINavigationControllerDelegate,MFMessageComposeViewControllerDelegate>
//add the below code in .m file
- (void)viewDidAppear:(BOOL)animated{
[super viewDidAppear:animated];
MFMessageComposeViewController *controller =
[[[MFMessageComposeViewController alloc] init] autorelease];
if([MFMessageComposeViewController canSendText])
{
NSString *str= @"Hello";
controller.body = str;
controller.recipients = [NSArray arrayWithObjects:
@"", nil];
controller.delegate = self;
[self presentModalViewController:controller animated:YES];
}
}
- (void)messageComposeViewController:
(MFMessageComposeViewController *)controller
didFinishWithResult:(MessageComposeResult)result
{
switch (result)
{
case MessageComposeResultCancelled:
NSLog(@"Cancelled");
break;
case MessageComposeResultFailed:
NSLog(@"Failed");
break;
case MessageComposeResultSent:
break;
default:
break;
}
[self dismissModalViewControllerAnimated:YES];
}
この手順に従ってください
1。MessageUI.Framework
プロジェクトに追加
2。#import <MessageUI/MessageUI.h>
.hファイルにインポートします。
3。メッセージを送信するためにこのコードをコピーします
if ([MFMessageComposeViewController canSendText]) {
MFMessageComposeViewController *messageComposer =
[[MFMessageComposeViewController alloc] init];
NSString *message = @"Message!!!";
[messageComposer setBody:message];
messageComposer.messageComposeDelegate = self;
[self presentViewController:messageComposer animated:YES completion:nil];
}
4。delegate
必要に応じてメソッドを実装します。
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{
///your stuff here
[self dismissViewControllerAnimated:YES completion:nil];
}
実行してGO!
[self dismissViewControllerAnimated:YES completion:nil];
内で実行することをお勧めしますmessageComposeViewController: didFinishWithResult:
。それ以外の場合は、そこにぶら下がるだけです。
これは、iOSでSMSを送信するためのコードのSwiftバージョンです。実際のデバイスでのみ機能することに注意してください。iOS 7以降でテストされたコード。詳しくはこちらをご覧ください。
1)MFMessageComposeViewControllerDelegateとNSObjectを継承する新しいクラスを作成します。
import Foundation
import MessageUI
class MessageComposer: NSObject, MFMessageComposeViewControllerDelegate {
// A wrapper function to indicate whether or not a text message can be sent from the user's device
func canSendText() -> Bool {
return MFMessageComposeViewController.canSendText()
}
// Configures and returns a MFMessageComposeViewController instance
func configuredMessageComposeViewController(textMessageRecipients:[String] ,textBody body:String) -> MFMessageComposeViewController {
let messageComposeVC = MFMessageComposeViewController()
messageComposeVC.messageComposeDelegate = self // Make sure to set this property to self, so that the controller can be dismissed!
messageComposeVC.recipients = textMessageRecipients
messageComposeVC.body = body
return messageComposeVC
}
// MFMessageComposeViewControllerDelegate callback - dismisses the view controller when the user is finished with it
func messageComposeViewController(controller: MFMessageComposeViewController!, didFinishWithResult result: MessageComposeResult) {
controller.dismissViewControllerAnimated(true, completion: nil)
}
}
2)このクラスの使用方法:
func openMessageComposerHelper(sender:AnyObject ,withIndexPath indexPath: NSIndexPath) {
var recipients = [String]()
//modify your recipients here
if (messageComposer.canSendText()) {
println("can send text")
// Obtain a configured MFMessageComposeViewController
let body = Utility.createInvitationMessageText()
let messageComposeVC = messageComposer.configuredMessageComposeViewController(recipients, textBody: body)
// Present the configured MFMessageComposeViewController instance
// Note that the dismissal of the VC will be handled by the messageComposer instance,
// since it implements the appropriate delegate call-back
presentViewController(messageComposeVC, animated: true, completion: nil)
} else {
// Let the user know if his/her device isn't able to send text messages
self.displayAlerViewWithTitle("Cannot Send Text Message", andMessage: "Your device is not able to send text messages.")
}
}
iOS 4には、アプリケーションからの本文とレシピエントを含むメッセージの送信をサポートするクラスがあります。メールの送信と同じように機能します。ドキュメントはここにあります:リンクテキスト
- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
UIImage *ui =resultimg.image;
pasteboard.image = ui;
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]];
}
//名前と番号でメソッドを呼び出す。
-(void)openMessageViewWithName:(NSString*)contactName withPhone:(NSString *)phone{
CTTelephonyNetworkInfo *networkInfo=[[CTTelephonyNetworkInfo alloc]init];
CTCarrier *carrier=networkInfo.subscriberCellularProvider;
NSString *Countrycode = carrier.isoCountryCode;
if ([Countrycode length]>0) //Check If Sim Inserted
{
[self sendSMS:msg recipientList:[NSMutableArray arrayWithObject:phone]];
}
else
{
[AlertHelper showAlert:@"Message" withMessage:@"No sim card inserted"];
}
}
//メッセージを送信する方法
- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSMutableArray *)recipients{
MFMessageComposeViewController *controller1 = [[MFMessageComposeViewController alloc] init] ;
controller1 = [[MFMessageComposeViewController alloc] init] ;
if([MFMessageComposeViewController canSendText])
{
controller1.body = bodyOfMessage;
controller1.recipients = recipients;
controller1.messageComposeDelegate = self;
[self presentViewController:controller1 animated:YES completion:Nil];
}
}
必要に応じて、クラスCoreTelephony
を呼び出したプライベートフレームワークを使用できますCTMessageCenter
。SMSを送信する方法はいくつかあります。
これを使って:
- (void)showSMSPicker
{
Class messageClass = (NSClassFromString(@"MFMessageComposeViewController"));
if (messageClass != nil) {
// Check whether the current device is configured for sending SMS messages
if ([messageClass canSendText]) {
[self displaySMSComposerSheet];
}
}
}
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
//feedbackMsg.hidden = NO;
// Notifies users about errors associated with the interface
switch (result)
{
case MessageComposeResultCancelled:
{
UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:@"Message" message:@"SMS sending canceled!!!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert1 show];
[alert1 release];
}
// feedbackMsg.text = @"Result: SMS sending canceled";
break;
case MessageComposeResultSent:
{
UIAlertView *alert2 = [[UIAlertView alloc] initWithTitle:@"Message" message:@"SMS sent!!!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert2 show];
[alert2 release];
}
// feedbackMsg.text = @"Result: SMS sent";
break;
case MessageComposeResultFailed:
{
UIAlertView *alert3 = [[UIAlertView alloc] initWithTitle:@"Message" message:@"SMS sending failed!!!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert3 show];
[alert3 release];
}
// feedbackMsg.text = @"Result: SMS sending failed";
break;
default:
{
UIAlertView *alert4 = [[UIAlertView alloc] initWithTitle:@"Message" message:@"SMS not sent!!!" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
[alert4 show];
[alert4 release];
}
// feedbackMsg.text = @"Result: SMS not sent";
break;
}
[self dismissModalViewControllerAnimated: YES];
}
SMSを送信できるMFMessageComposeViewControllerを提示できますが、ユーザープロンプトを使用できます(送信ボタンをタップします)。ユーザーの許可なしにそれを行う方法はありません。iOS 11では、受信メッセージのフィルターのような拡張機能を作成して、iOSにスパムかどうかを通知できます。SMSでこれ以上何もできない