Weiß jemand, ob es möglich ist und wie man programmgesteuert eine SMS von der iPhone
mit dem offiziellen SDK / Cocoa Touch sendet ?
ios
objective-c
cocoa-touch
sms
Nitin Gohel
quelle
quelle
tools->script editor
und dann in einer POST-Anfrage dieMailApp.sendEmail
API verwenden, um E-Mails an eine Telefonnummer zu senden. att's ist [email protected], tmobile's ist [email protected] Ich denke (ALL FREE)Antworten:
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
viewController
Sie 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.
quelle
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:
Und ein Link zu den Dokumenten.
https://developer.apple.com/documentation/messageui/mfmessagecomposeviewcontroller
quelle
MFMessageComposeViewController *controller = ...
Innere in den if-Block zu setzen. (Die Klassenmethode benötigt keine Instanz, um den Test durchzuführen)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.#import <MessageUI/MessageUI.h>
in Ihre Header-Datei einMFMessageComposeViewControllerDelegate
& hinzuUINavigationControllerDelegate
IBAction
Methode die Instanz vonMFMessageComposeViewController
saymessageInstance
[MFMessageComposeViewController canSendText]
in einer if-Bedingung senden kann, wird Ja / Nein zurückgegebenIn der
if
Bedingung machen Sie diese:Stellen Sie zuerst Ihren Körper ein
messageInstance
als:Entscheiden Sie dann die Empfänger für die Nachricht wie folgt:
Legen Sie einen Delegaten für Ihre messageInstance fest als:
In der letzten Zeile machen Sie Folgendes:
quelle
presentModalViewController:animated:
ist veraltet; Verwenden SiepresentViewController:animated:completion:
stattdessen. Denken Sie auch daran, die Delegatmethode zu definieren,- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
wenn Sie die Ergebnisse wissen möchten.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.quelle
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.
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.
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.
Es bleibt wenig übrig: Senden Sie die Nachricht an den XPC-Port und stellen Sie sicher, dass sie zugestellt wird.
Das ist alles. SMS gesendet.
quelle
Fügen Sie die MessageUI.Framework hinzu und verwenden Sie den folgenden Code
Und dann:
und die Delegatenmethode -
quelle
Sie können diesen Ansatz verwenden:
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.
quelle
quelle
Befolgen Sie diese Verfahren
1. Zum
MessageUI.Framework
Projekt hinzufügen2. Import
#import <MessageUI/MessageUI.h>
in .h - Datei.3 . Kopieren Sie diesen Code zum Senden einer Nachricht
4. Implementieren
delegate
Sie die Methode, wenn Sie möchten.Run And GO!
quelle
[self dismissViewControllerAnimated:YES completion:nil];
innerhalbmessageComposeViewController: didFinishWithResult:
Callback - Methode. Sonst hängt es einfach da.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:
2) Verwendung dieser Klasse:
quelle
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
quelle
quelle
// Methode mit Name und Nummer aufrufen.
}}
// Methode zum Senden einer Nachricht
quelle
Wenn Sie möchten, können Sie das private Framework verwenden,
CoreTelephony
dasCTMessageCenter
class heißt . Es gibt einige Methoden, um SMS zu senden.quelle
Benutze das:
quelle
Dies wäre der beste und kurze Weg, dies zu tun.
quelle
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
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.
quelle