Wie sende ich programmgesteuert SMS auf dem iPhone?

526

Weiß jemand, ob es möglich ist und wie man programmgesteuert eine SMS von der iPhonemit dem offiziellen SDK / Cocoa Touch sendet ?

Nitin Gohel
quelle
in Ios 4 Sie können SMS mit Code senden, aber das Problem ist, dass Ihre Anwendung geschlossen wird
Pankaj Kainthla
Wenn die Verwendung des offiziellen SDK für andere nicht erforderlich ist, habe ich diesen Beitrag geschrieben, um zu zeigen, wie dies mit Twilio gemacht wird: twilio.com/blog/2016/11/…
Megan Speir
Sie können aus Google Mail eine Google-Tabelle erstellen, die gewünschten Felder erstellen tools->script editorund dann in einer POST-Anfrage die MailApp.sendEmailAPI verwenden, um E-Mails an eine Telefonnummer zu senden. att's ist [email protected], tmobile's ist [email protected] Ich denke (ALL FREE)
Coty Embry

Antworten:

404

Beschränkungen

Wenn Sie eine SMS innerhalb eines Programms auf dem iPhone senden könnten, könnten Sie Spiele schreiben, die Personen im Hintergrund als Spam versenden. Ich bin mir sicher, dass Sie wirklich Spam von Ihren Freunden haben möchten: "Probieren Sie dieses neue Spiel aus! Es roxxert meine Boxxer und deins auch! Roxxersboxxers.com !!!! Wenn Sie sich jetzt anmelden, erhalten Sie 3.200 RB Punkte !! "

Apple hat Einschränkungen für automatisierte (oder sogar teilweise automatisierte) SMS- und Wählvorgänge. (Stellen Sie sich vor, das Spiel wählt stattdessen zu einer bestimmten Tageszeit 911)

Am besten richten Sie im Internet einen Zwischenserver ein, der einen Online-SMS-Versanddienst verwendet, und senden die SMS über diese Route, wenn Sie eine vollständige Automatisierung benötigen. (dh Ihr Programm auf dem iPhone sendet ein UDP-Paket an Ihren Server, das die echte SMS sendet.)

iOS 4 Update

iOS 4 bietet jetzt jedoch eine Möglichkeit, die viewControllerSie in Ihre Anwendung importieren können. Wenn Sie die SMS-Felder vorab ausfüllen, kann der Benutzer den SMS-Versand innerhalb des Controllers initiieren. Im Gegensatz zur Verwendung des URL-Formats "SMS: ..." bleibt Ihre Anwendung dadurch geöffnet, und Sie können sowohl die Felder " to" als auch " body" ausfüllen. Sie können sogar mehrere Empfänger angeben.

Dies verhindert, dass Anwendungen automatisierte SMS senden, ohne dass der Benutzer dies ausdrücklich bemerkt. Sie können immer noch keine vollautomatischen SMS vom iPhone selbst senden. Dies erfordert eine gewisse Benutzerinteraktion. Auf diese Weise können Sie jedoch zumindest alles auffüllen und das Schließen der Anwendung vermeiden.

Die MFMessageComposeViewController- Klasse ist gut dokumentiert, und Tutorials zeigen, wie einfach die Implementierung ist.

iOS 5 Update

iOS 5 enthält Nachrichten für iPod touch- und iPad-Geräte. Obwohl ich dies noch nicht selbst getestet habe, können möglicherweise alle iOS-Geräte SMS über MFMessageComposeViewController senden. In diesem Fall führt Apple einen SMS-Server aus, der Nachrichten für Geräte sendet, die kein Mobilfunkmodem haben.

iOS 6 Update

Keine Änderungen an dieser Klasse.

iOS 7 Update

Sie können jetzt überprüfen, ob das von Ihnen verwendete Nachrichtenmedium einen Betreff oder Anhänge akzeptiert und welche Art von Anhängen akzeptiert werden. Sie können den Betreff bearbeiten und der Nachricht Anhänge hinzufügen, sofern das Medium dies zulässt.

iOS 8 Update

Keine Änderungen an dieser Klasse.

iOS 9 Update

Keine Änderungen an dieser Klasse.

iOS 10 Update

Keine Änderungen an dieser Klasse.

iOS 11 Update

Keine wesentlichen Änderungen an dieser Klasse

Einschränkungen für diese Klasse

Beachten Sie, dass dies auf Telefonen ohne iOS 4 nicht funktioniert und auf dem iPod touch oder dem iPad nicht funktioniert, außer möglicherweise unter iOS 5. Sie müssen entweder die Geräte- und iOS-Einschränkungen erkennen, bevor Sie dies verwenden Controller oder Risiko, Ihre App auf kürzlich aktualisierte 3G-, 3GS- und 4-iPhones zu beschränken.

Auf einem Zwischenserver, der SMS sendet, können jedoch alle diese iOS-Geräte SMS senden, solange sie über einen Internetzugang verfügen. Daher ist dies möglicherweise für viele Anwendungen immer noch eine bessere Lösung. Verwenden Sie alternativ beide und greifen Sie nur dann auf einen Online-SMS-Dienst zurück, wenn das Gerät dies nicht unterstützt.

Adam Davis
quelle
12
Und wenn Sie diese Domain kaufen, kann ich Sie nie wieder so sehen.
Adam Davis
79
Ich finde es ironisch, dass jemand diesen Beitrag als Spam gekennzeichnet hat. Lesen Sie zwischen den Zeilen, Völker!
Randolpho
2
-1, weil dies als Spekulation liest. Lesen Sie auch die Antworten von Jus 'Wondrin' und rydgaze zum Senden von In-App-SMS.
Frank Shearar
8
@Frank - Mein Artikel wurde aktualisiert, um die neuen iOS 4-Funktionen widerzuspiegeln. Wishy-Washy-Formulierung entfernt.
Adam Davis
13
Ich freue mich sehr, dass Sie diesen Beitrag für neue iOS-Versionen auf dem neuesten Stand halten. :)
Ciryon
143

Hier ist ein Tutorial, das genau das macht, wonach Sie suchen: das MFMessageComposeViewController.

http://blog.mugunthkumar.com/coding/iphone-tutorial-how-to-send-in-app-sms/

Im Wesentlichen:

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

Und ein Link zu den Dokumenten.

https://developer.apple.com/documentation/messageui/mfmessagecomposeviewcontroller

Daniel Amitay
quelle
Trotzdem muss das SMS-Formular angezeigt werden. Gibt es eine Möglichkeit, Hintergrundinformationen einzusenden?
Raptor
5
Sie können SMS sicherlich im Hintergrund mit einem Dienst wie Twilio senden. Wenn Sie sie jedoch von der Telefonnummer des Benutzers aus senden möchten, muss dieser die Nachricht über die oben beschriebene Methode genehmigen.
Daniel Amitay
3
Jeder, der den obigen Code verwendet, kann in Betracht ziehen, das MFMessageComposeViewController *controller = ...Innere in den if-Block zu setzen. (Die Klassenmethode benötigt keine Instanz, um den Test durchzuführen)
unsynchronisiert
Der Link http://blog.mugunthkumar.com/coding/iphone-tutorial-how-to-send-in-app-sms/sagt "502 Bad Gateway" auf meinem Laptop. Möglicherweise ist die Verbindung unterbrochen.
Nikita Vlasenko
99
  1. Sie müssen das MessageUI.framework zu Ihrem Xcode-Projekt hinzufügen
  2. Fügen Sie ein #import <MessageUI/MessageUI.h>in Ihre Header-Datei ein
  3. Fügen Sie diese Delegaten Ihrer Header-Datei MFMessageComposeViewControllerDelegate & hinzuUINavigationControllerDelegate
  4. Deklarieren Sie in Ihrer IBActionMethode die Instanz von MFMessageComposeViewControllersaymessageInstance
  5. Um zu überprüfen, ob Ihr Gerät Text [MFMessageComposeViewController canSendText]in einer if-Bedingung senden kann, wird Ja / Nein zurückgegeben
  6. In der ifBedingung machen Sie diese:

    1. Stellen Sie zuerst Ihren Körper ein messageInstanceals:

      messageInstance.body = @"Hello from Shah";
    2. Entscheiden Sie dann die Empfänger für die Nachricht wie folgt:

      messageInstance.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321",         nil];
    3. Legen Sie einen Delegaten für Ihre messageInstance fest als:

      messageInstance.messageComposeDelegate = self;
    4. In der letzten Zeile machen Sie Folgendes:

      [self presentModalViewController:messageInstance animated:YES];
Najeebullah Shah
quelle
2
Versionshinweis: presentModalViewController:animated:ist veraltet; Verwenden Sie presentViewController:animated:completion:stattdessen. Denken Sie auch daran, die Delegatmethode zu definieren, - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)resultwenn Sie die Ergebnisse wissen möchten.
Raptor
Bitte geben Sie den Code zum Testen ein. @ Najeebullah Shah hier oder in Github.
50

Sie können eine sms:[target phone number]URL verwenden, um die SMS-Anwendung zu öffnen. Es gibt jedoch keine Hinweise, wie Sie einen SMS-Text mit Text vorfüllen können.

millenomi
quelle
React-Native-Communications verwendet den Parameter & body =, um den Text beim Öffnen der SMS vorab auszufüllen: Zieltelefonnummer & body = textyouwanttoprefillwith für iOS
Doug Voss
Ich habe es gerade auf meinem iPhone 8 versucht und es hat super funktioniert ... danke!
Brad Parks
Ich muss eine SMS an eine bestimmte Nummer senden, aber mit vordefiniertem (vorgefülltem) Text. Dieser Text sollte die manuelle Auswahl aus 4 möglichen Optionen sein. ZB Die App wird geöffnet und Popups "Grund auswählen". Dann stehen 4 Optionen zur Verfügung. Als nächstes wählt der Benutzer eine dieser 4 Optionen aus und dann wird eine automatische SMS gesendet, die als Text die Wahl des Benutzers enthält. irgendeinen Tipp?
Seralouk
25

Eines der Systeme der prozessübergreifenden Kommunikation in MacOS ist XPC. Diese Systemschicht wurde für die prozessübergreifende Kommunikation basierend auf der Übertragung von Plist-Strukturen mit libSystem und launchd entwickelt. Tatsächlich ist es eine Schnittstelle, die die Verwaltung von Prozessen über den Austausch von Strukturen wie Wörterbüchern ermöglicht. Aufgrund der Vererbung besitzt iOS 5 auch diesen Mechanismus.

Vielleicht verstehen Sie bereits, was ich mit dieser Einführung meine. Ja, es gibt Systemdienste in iOS, die Tools für die XPC-Kommunikation enthalten. Und ich möchte die Arbeit mit einem Daemon für das Senden von SMS veranschaulichen. Es sollte jedoch erwähnt werden, dass diese Fähigkeit in iOS 6 behoben ist, jedoch für iOS 5.0—5.1.1 relevant ist. Jailbreak, Private Framework und andere illegale Tools sind für die Nutzung nicht erforderlich. Es werden nur die Header-Dateien aus dem Verzeichnis / usr / include / xpc / * benötigt.

Eines der Elemente für das Senden von SMS in iOS ist der Systemdienst com.apple.chatkit, dessen Aufgaben das Generieren, Verwalten und Senden von kurzen Textnachrichten umfassen. Zur Vereinfachung der Steuerung verfügt es über den öffentlich verfügbaren Kommunikationsport com.apple.chatkit.clientcomposeserver.xpc. Mit dem XPC-Subsystem können Sie Nachrichten ohne Zustimmung des Benutzers generieren und senden. 

Versuchen wir, eine Verbindung herzustellen.

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

Jetzt haben wir die XPC-Verbindung myConnection auf den Dienst des SMS-Sendens eingestellt. Die XPC-Konfiguration ermöglicht jedoch die Erstellung angehaltener Verbindungen. Für die Aktivierung müssen wir einen weiteren Schritt ausführen.

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

Die Verbindung ist aktiviert. In diesem Moment zeigt iOS 6 im Telefonprotokoll eine Meldung an, dass diese Art der Kommunikation verboten ist. Jetzt müssen wir ein Wörterbuch ähnlich xpc_dictionary mit den Daten generieren, die für das Senden der Nachricht erforderlich sind.

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!");

Es bleibt wenig übrig: Senden Sie die Nachricht an den XPC-Port und stellen Sie sicher, dass sie zugestellt wird.

xpc_connection_send_message(myConnection, mydict);
xpc_connection_send_barrier(myConnection, ^{
NSLog(@"The message has been successfully delivered");
});

Das ist alles. SMS gesendet.

Isox
quelle
1
Sie sollten XPC nicht zum Senden von SMS verwenden. Die produzierte App wird von Apple nicht genehmigt. Verwenden Sie stattdessen MessageUI Framework
Raptor
Wenn Sie diese Technik für Apps verwenden, die Sie für Ihr Unternehmen verwenden, und die App nicht über den App Store läuft, haben Sie keine Sorgen.
Martin Berger
Funktioniert dies unter iOS-Versionen 10+?
Martin Berger
Erhalten "XPC Sandbox Verbindungsfehler: Verbindung ungültig" auf iOS 12
Martin Berger
23

Fügen Sie die MessageUI.Framework hinzu und verwenden Sie den folgenden Code

#import <MessageUI/MessageUI.h> 

Und dann:

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

und die Delegatenmethode -

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
             didFinishWithResult:(MessageComposeResult)result {
      [self dismissViewControllerAnimated:YES completion:nil];
 }
Bharat Gulati
quelle
Hey, das ist großartig, aber können wir diese Funktionalität vom Hintergrund aus ausführen?
Raj
3
Apple erlaubt Ihnen nicht, Nachrichten ohne Zustimmung der Benutzer zu senden. Er muss eine Nachricht / E-Mail senden, indem er die Taste manuell drückt. Alternativ können Sie einen benutzerdefinierten Dienst verwenden, indem Sie E-Mails / Nummern an Ihr Backend senden und anschließend senden. Obwohl Sie dies nicht direkt auf dem iPhone tun können
Bharat Gulati
21

Sie können diesen Ansatz verwenden:

[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"sms:MobileNumber"]]


iOS navigiert automatisch von Ihrer App zur Seite zum Erstellen von Nachrichten der Nachrichten-App. Da das Schema der URL mit sms: beginnt, wird dies als ein Typ identifiziert, der von der Nachrichten-App erkannt und gestartet wird.

Dinesh Reddy Chennuru
quelle
12
//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]; 
}
Rushabh
quelle
Sie sollten diesen Link sehen: blog.mugunthkumar.com/coding/… es wird Ihnen helfen
Banker Mittal
12

Befolgen Sie diese Verfahren

1. Zum MessageUI.FrameworkProjekt hinzufügenGeben Sie hier die Bildbeschreibung ein

2. Import #import <MessageUI/MessageUI.h>in .h - Datei.

3 . Kopieren Sie diesen Code zum Senden einer Nachricht

 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. Implementieren delegateSie die Methode, wenn Sie möchten.

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result{


   ///your stuff here 

    [self dismissViewControllerAnimated:YES completion:nil];
}

Run And GO!

Tunvir Rahman Tusher
quelle
erwähnenswert , dass Sie wahrscheinlich ausführen möchten [self dismissViewControllerAnimated:YES completion:nil];innerhalb messageComposeViewController: didFinishWithResult:Callback - Methode. Sonst hängt es einfach da.
SaltyNuts
5

Hier ist die Swift-Version des Codes zum Senden von SMS in iOS. Bitte beachten Sie, dass es nur in realen Geräten funktioniert. Code getestet in iOS 7+. Sie können mehr lesen hier .

1) Erstellen Sie eine neue Klasse, die MFMessageComposeViewControllerDelegate und NSObject erbt:

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) Verwendung dieser Klasse:

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.")
    }
}
grandagile
quelle
3

In iOS 4 gibt es eine Klasse, die das Senden von Nachrichten mit Text und Empfängern aus Ihrer Anwendung unterstützt. Dies funktioniert genauso wie das Senden von E-Mails. Die Dokumentation finden Sie hier: Linktext

Pankaj Kainthla
quelle
3
- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    UIImage *ui =resultimg.image;
    pasteboard.image = ui;
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]];
}
mandeep
quelle
4
Wie nützlich sind Ihre Parameter?
Martinsurleweb
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: @ "sms:"]];
Amr Angry
3

// Methode mit Name und Nummer aufrufen.

-(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"];
}

}}

// Methode zum Senden einer Nachricht

- (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];
 }
}
ALOK KUMAR
quelle
2

Wenn Sie möchten, können Sie das private Framework verwenden, CoreTelephonydas CTMessageCenterclass heißt . Es gibt einige Methoden, um SMS zu senden.

neue Seele
quelle
1
Er fragte ausdrücklich, ob dies mit dem offiziellen SDK möglich sei.
Quentamia
1
Können Sie weitere Informationen zur privaten API bereitstellen? Ich habe kein Problem damit, ein privates Framework zu verwenden, da ich es nicht im App Store veröffentlichen muss.
Bagusflyer
1

Benutze das:

- (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];
}
Felsen
quelle
1
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"sms:number"]] 

Dies wäre der beste und kurze Weg, dies zu tun.

Rinku Sadhwani
quelle
1

Sie können MFMessageComposeViewController präsentieren, der SMS senden kann, jedoch mit einer Benutzeraufforderung (er tippt auf die Schaltfläche Senden). Ohne Benutzerberechtigung ist dies nicht möglich. Unter iOS 11 können Sie eine Erweiterung vornehmen, die wie ein Filter für eingehende Nachrichten sein kann und iOS entweder über Spam informiert oder nicht. Mit SMS kann nichts mehr gemacht werden

Максуд Даудов
quelle
Die frische Antwort!
Fattie
0

Sie müssen den MFMessageComposeViewController verwenden, wenn Sie das Erstellen und Senden der Nachricht in Ihrer eigenen App anzeigen möchten.

Andernfalls können Sie die sharedApplication- Methode verwenden.

parvind
quelle