Jak programowo wysyłać SMS-y na iPhone?

526

Czy ktoś wie, czy jest to możliwe i jak programowo wysłać SMS z iPhoneoficjalnego SDK / Cocoa Touch?

Nitin Gohel
źródło
na iOS 4 Możesz wysyłać SMS-y z kodem, ale problem polega na tym, że Twoja aplikacja zostanie zamknięta
Pankaj Kainthla
Jeśli korzystanie z oficjalnego zestawu SDK nie jest wymagane dla innych, napisałem ten post, aby pokazać, jak to zrobić za pomocą usługi Twilio: twilio.com/blog/2016/11/…
Megan Speir
możesz utworzyć arkusz kalkulacyjny Google z Gmaila, ustawić pola, które chcesz, a następnie zrobić tools->script editori we wniosku POST użyć MailApp.sendEmailinterfejsu API, aby wysłać e-mail na numer telefonu. att's to [email protected], tmobile's to [email protected] Myślę, że (WSZYSTKO ZA DARMO)
Coty Embry

Odpowiedzi:

404

Ograniczenia

Jeśli możesz wysłać SMS-a w ramach programu na iPhonie, będziesz mógł pisać gry spamujące osoby w tle. Jestem pewien, że naprawdę chcesz otrzymywać spam od znajomych: „Wypróbuj tę nową grę! Roxxers mój boxxers, a twoje też będzie! Roxxersboxxers.com !!!! Jeśli zarejestrujesz się teraz dostaniesz 3200 RB zwrotnica!!"

Apple ma ograniczenia dotyczące automatycznych (lub nawet częściowo zautomatyzowanych) operacji SMS i wybierania numerów. (Wyobraź sobie, że zamiast tego gra wybrała numer 911 o określonej porze dnia)

Najlepszym rozwiązaniem jest skonfigurowanie pośredniego serwera w Internecie, który korzysta z usługi wysyłania SMS-ów online i wysyłanie wiadomości SMS tą drogą, jeśli potrzebujesz pełnej automatyzacji. (tzn. twój program na iPhonie wysyła pakiet UDP na twój serwer, który wysyła prawdziwy SMS)

Aktualizacja iOS 4

Jednak iOS 4 umożliwia teraz viewControllerimportowanie do aplikacji. Po wypełnieniu pól SMS użytkownik może zainicjować wysyłanie wiadomości SMS w kontrolerze. W przeciwieństwie do formatu URL „SMS: ...” pozwala to aplikacji pozostać otwartymi i umożliwia wypełnienie pól „ do” i „ body” . Możesz nawet podać wielu odbiorców.

Zapobiega to wysyłaniu przez aplikacje automatycznych wiadomości SMS bez wyraźnej wiedzy użytkownika. Nadal nie można wysyłać w pełni zautomatyzowanych wiadomości SMS z samego iPhone'a, wymaga to interakcji użytkownika. Ale to pozwala przynajmniej wypełnić wszystko i pozwala uniknąć zamykania aplikacji.

MFMessageComposeViewController klasa jest dobrze udokumentowany i samouczki pokazać, jak łatwo jest do wdrożenia.

Aktualizacja iOS 5

iOS 5 zawiera wiadomości dla iPoda touch i iPada, więc chociaż sam jeszcze tego nie przetestowałem, być może wszystkie urządzenia iOS będą mogły wysyłać SMS-y za pośrednictwem MFMessageComposeViewController. W takim przypadku Apple uruchamia serwer SMS, który wysyła wiadomości w imieniu urządzeń, które nie mają modemu komórkowego.

Aktualizacja iOS 6

Brak zmian w tej klasie.

Aktualizacja iOS 7

Możesz teraz sprawdzić, czy używany przez Ciebie nośnik wiadomości zaakceptuje temat lub załączniki oraz jakiego rodzaju załączniki będzie akceptował. Możesz edytować temat i dodawać załączniki do wiadomości, o ile pozwala na to medium.

Aktualizacja iOS 8

Brak zmian w tej klasie.

Aktualizacja iOS 9

Brak zmian w tej klasie.

Aktualizacja iOS 10

Brak zmian w tej klasie.

Aktualizacja iOS 11

Brak istotnych zmian w tej klasie

Ograniczenia do tej klasy

Pamiętaj, że to nie zadziała na telefonach bez iOS 4 i nie będzie działać na iPodzie touch ani iPadzie, z wyjątkiem być może na iOS 5. Przed użyciem tego urządzenia musisz wykryć ograniczenia urządzenia i iOS kontroler lub ryzyko ograniczenia aplikacji do ostatnio zaktualizowanych 3G, 3GS i 4 iPhone'ów.

Jednak serwer pośredni, który wysyła SMS-y, pozwoli każdemu z tych urządzeń iOS wysyłać SMS-y, o ile mają one dostęp do Internetu, więc nadal może być lepszym rozwiązaniem dla wielu aplikacji. Alternatywnie skorzystaj z obu i wracaj do internetowej usługi SMS tylko wtedy, gdy urządzenie jej nie obsługuje.

Adam Davis
źródło
12
A jeśli kupisz tę domenę, nigdy więcej nie będę mógł patrzeć na ciebie w ten sam sposób.
Adam Davis,
79
Myślę, że to ironia losu, że ktoś oznaczył ten post jako spam. Czytajcie między wierszami, ludzie!
Randolpho
2
-1, ponieważ brzmi to jak spekulacja. Zobacz także odpowiedzi Jusa „Wondrin” i rydgaze na temat wysyłania SMS-ów w aplikacji.
Frank Shearar
8
@Frank - Zaktualizowałem mój skrypt, aby odzwierciedlić nowe funkcje iOS 4. Usunięto nieprzyzwoite sformułowanie.
Adam Davis,
13
Naprawdę doceniam to, że aktualizujesz ten post dla nowych wersji iOS. :)
Ciryon
143

Oto poradnik, który ma dokładnie to, czego szukasz: the MFMessageComposeViewController.

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

Głównie:

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

I link do dokumentów.

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

Daniel Amitay
źródło
jednak formularz SMS musi wyskoczyć. Jakiś sposób, aby wysłać w tle?
Raptor,
5
Z pewnością możesz wysyłać SMS-y w tle za pomocą usługi takiej jak Twilio, ale jeśli chcesz wysłać je z numeru telefonu użytkownika, musi on zatwierdzić wiadomość za pomocą powyższej metody.
Daniel Amitay,
3
każdy, kto użyje powyższego kodu, może rozważyć umieszczenie MFMessageComposeViewController *controller = ...wewnątrz bloku if. (metoda klasy nie musi mieć instancji do wykonania testu)
niezsynchronizowany
Link http://blog.mugunthkumar.com/coding/iphone-tutorial-how-to-send-in-app-sms/mówi „502 Bad Gateway” na moim laptopie. Może link jest zepsuty.
Nikita Vlasenko
99
  1. Musisz dodać MessageUI.framework do swojego projektu Xcode
  2. Uwzględnij #import <MessageUI/MessageUI.h>w pliku nagłówka
  3. Dodaj tych delegatów do pliku nagłówka MFMessageComposeViewControllerDelegate iUINavigationControllerDelegate
  4. W swojej IBActionmetodzie zadeklaruj przykład MFMessageComposeViewControllerpowiedzmessageInstance
  5. Aby sprawdzić, czy urządzenie może wysyłać wiadomości tekstowe [MFMessageComposeViewController canSendText]w warunku if, zwraca wartość Tak / Nie
  6. Pod ifwarunkiem wykonaj następujące czynności:

    1. Najpierw ustaw ciało dla messageInstance:

      messageInstance.body = @"Hello from Shah";
    2. Następnie określ adresatów wiadomości jako:

      messageInstance.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321",         nil];
    3. Ustaw pełnomocnika do wiadomości jako:

      messageInstance.messageComposeDelegate = self;
    4. W ostatniej linii zrób to:

      [self presentModalViewController:messageInstance animated:YES];
Najeebullah Shah
źródło
2
Uwaga do wersji: presentModalViewController:animated:jest przestarzała; użyj presentViewController:animated:completion:zamiast tego. Pamiętaj również, aby zdefiniować metodę delegowania, - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)resultjeśli chcesz poznać wyniki.
Raptor
Proszę podać kod do testu. @Najeebullah Shah tutaj lub w github.
50

Możesz użyć sms:[target phone number]adresu URL, aby otworzyć aplikację SMS, ale nic nie wskazuje na to, jak napełnić treść SMS tekstem.

millenomi
źródło
Reakcja-natywna-komunikacja używa parametru & body = do wstępnego wypełnienia tekstu podczas otwierania sms: targetphonenumber & body = textyouwanttoprefillwith dla iOS
Doug Voss
Właśnie próbowałem tego na moim iPhonie 8 i działało świetnie ... dzięki!
Brad Parks
Muszę wysłać SMS na określony numer, ale z predefiniowanym (wstępnie wypełnionym) tekstem. Tekst powinien być ręcznym wyborem z 4 możliwych opcji. Np. Aplikacja otwiera się i wyskakujące okienka „wybierz powód”. Następnie dostępne są 4 opcje. Następnie użytkownik wybiera jedną z tych 4 opcji, a następnie wysyłana jest automatyczna wiadomość SMS, której tekstem jest wybór użytkownika. jakaś wskazówka?
seralouk
25

Jednym z systemów komunikacji między procesami w MacOS jest XPC. Ta warstwa systemowa została opracowana do komunikacji międzyprocesowej w oparciu o transfer struktur plist za pomocą libSystem i uruchomiona. W rzeczywistości jest to interfejs, który pozwala zarządzać procesami poprzez wymianę takich struktur, jak słowniki. Ze względu na dziedziczność, iOS 5 posiada również ten mechanizm.

Być może już rozumiesz, co mam na myśli przez to wprowadzenie. Tak, w iOS są usługi systemowe, które obejmują narzędzia do komunikacji XPC. I chcę zilustrować pracę z demonem do wysyłania SMS-ów. Należy jednak wspomnieć, że ta zdolność jest naprawiona w iOS 6, ale ma znaczenie w iOS 5.0–5.1.1. Jailbreak, Private Framework i inne nielegalne narzędzia nie są wymagane do jego wykorzystania. Potrzebny jest tylko zestaw plików nagłówkowych z katalogu / usr / include / xpc / *.

Jednym z elementów wysyłania SMS-ów w iOS jest usługa systemowa com.apple.chatkit, której zadania obejmują generowanie, zarządzanie i wysyłanie krótkich wiadomości tekstowych. Dla ułatwienia kontroli ma publicznie dostępny port komunikacyjny com.apple.chatkit.clientcomposeserver.xpc. Korzystając z podsystemu XPC, możesz generować i wysyłać wiadomości bez zgody użytkownika. 

Spróbujmy utworzyć połączenie.

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

Teraz mamy połączenie XPC myConnection ustawione na usługę wysyłania wiadomości SMS. Jednak konfiguracja XPC umożliwia tworzenie zawieszonych połączeń - musimy wykonać jeszcze jeden krok w celu aktywacji.

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

Połączenie zostało aktywowane. W tym momencie iOS 6 wyświetli komunikat w dzienniku telefonu, że ten rodzaj komunikacji jest zabroniony. Teraz musimy wygenerować słownik podobny do xpc_dictionary z danymi wymaganymi do wysłania wiadomości.

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

Pozostało niewiele: wyślij wiadomość do portu XPC i upewnij się, że została dostarczona.

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

To wszystko. SMS wysłany.

isox
źródło
1
Nie należy używać XPC do wysyłania wiadomości SMS. Wyprodukowana aplikacja nie zostanie zatwierdzona przez Apple. Zamiast tego należy użyć frameworka MessageUI
Raptor
Jeśli używasz tej techniki dla aplikacji, której używasz w swojej organizacji, a aplikacja nie przechodzi przez sklep z aplikacjami, nie martw się.
Martin Berger,
Czy to działa na iOS 10+?
Martin Berger,
Uzyskiwanie komunikatu „Błąd połączenia piaskownicy XPC: Niepoprawne połączenie” w systemie iOS 12
Martin Berger,
23

Dodaj MessageUI.Framework i użyj następującego kodu

#import <MessageUI/MessageUI.h> 

I wtedy:

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

i metoda delegowania -

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
             didFinishWithResult:(MessageComposeResult)result {
      [self dismissViewControllerAnimated:YES completion:nil];
 }
Bharat Gulati
źródło
hej, to świetnie, ale czy możemy wykonać tę funkcjonalność w tle?
Raj,
3
Apple nie zezwoli na wysyłanie wiadomości bez zgody użytkowników. Musi wysłać wiadomość / e-mail ręcznie naciskając przycisk. Alternatywnie możesz skorzystać z usługi niestandardowej, wysyłając e-maile / numery do swojego zaplecza, a następnie wysyłając. Chociaż nie można tego zrobić bezpośrednio na iPhonie
Bharat Gulati
21

Możesz użyć tego podejścia:

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


iOS automatycznie przejdzie z aplikacji do strony tworzenia wiadomości w aplikacji wiadomości. Ponieważ schemat adresu URL zaczyna się od sms :, jest to rozpoznawane jako typ rozpoznawany przez aplikację wiadomości i uruchamiający go.

Dinesh Reddy Chennuru
źródło
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
źródło
powinieneś zobaczyć ten link: blog.mugunthkumar.com/coding/… to ci pomoże
Banker Mittal
12

Postępuj zgodnie z tymi procedurami

1. Dodaj MessageUI.Frameworkdo projektuwprowadź opis zdjęcia tutaj

2) Import#import <MessageUI/MessageUI.h> do pliku .h.

3) Skopiuj ten kod do wysyłania wiadomości

 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 Zastosuj delegatemetodę, jeśli chcesz.

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


   ///your stuff here 

    [self dismissViewControllerAnimated:YES completion:nil];
}

Run And GO!

Tunvir Rahman Tusher
źródło
Warto wspomnieć, że prawdopodobnie będziesz chciał uruchomić [self dismissViewControllerAnimated:YES completion:nil];wewnątrz messageComposeViewController: didFinishWithResult:metody wywołania zwrotnego. W przeciwnym razie po prostu się tam zawiesi.
SaltyNuts
5

Oto szybka wersja kodu do wysyłania wiadomości SMS w systemie iOS. Pamiętaj, że działa tylko na prawdziwych urządzeniach. Kod przetestowany w iOS 7+. Możesz przeczytać więcej tutaj .

1) Utwórz nową klasę, która dziedziczy MFMessageComposeViewControllerDelegate i 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) Jak korzystać z tej klasy:

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
źródło
3

W iOS 4 istnieje klasa, która obsługuje wysyłanie wiadomości z treścią i adresatami z Twojej aplikacji. Działa tak samo jak wysyłanie poczty. Dokumentację można znaleźć tutaj: tekst linku

Pankaj Kainthla
źródło
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
źródło
4
jak przydatne są twoje parametry?
martinsurleweb
[[UIApplication sharedApplication] openURL: [NSURL URLWithString: @ "sms:"]];
Amr Angry
3

// metoda wywołania z nazwą i numerem.

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

}

// Metoda wysyłania wiadomości

- (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
źródło
2

Jeśli chcesz, możesz użyć prywatnego frameworka, CoreTelephonyktóry nazywał się CTMessageCenterclass. Istnieje kilka metod wysyłania SMS-ów.

Nowa dusza
źródło
1
W szczególności zapytał, czy jest to możliwe przy użyciu oficjalnego zestawu SDK.
Quentamia
1
Czy możesz podać więcej informacji na temat prywatnego interfejsu API? Nie mam problemu z używaniem prywatnego frameworka, ponieważ nie muszę go publikować w App Store.
Bagusflyer
1

Użyj tego:

- (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];
}
Skała
źródło
1
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"sms:number"]] 

To byłby najlepszy i krótki sposób na zrobienie tego.

Rinku Sadhwani
źródło
1

Możesz przedstawić MFMessageComposeViewController, który może wysyłać SMS-y, ale z monitem użytkownika (stuknie przycisk wysyłania). Nie można tego zrobić bez zgody użytkownika. W systemie iOS 11 możesz utworzyć rozszerzenie, które może być filtrem dla wiadomości przychodzących, informując iOS, czy jest spamem, czy nie. Nic więcej nie można zrobić za pomocą SMS-a

Максуд Даудов
źródło
Świeża odpowiedź!
Fattie,
0

Musisz użyć MFMessageComposeViewController jeśli chcesz pokazać tworzenie i wysyłanie wiadomości we własnej aplikacji.

W przeciwnym razie możesz użyć metody sharedApplication .

parvind
źródło