Bagaimana untuk pemrograman mengirim SMS pada iPhone?

Apakah ada yang tahu jika itu's mungkin, dan bagaimana, untuk pemrograman mengirim SMS dari iPhone, dengan resmi SDK / Cocoa Touch?

Mengomentari pertanyaan (3)

Pembatasan

Jika anda bisa mengirim SMS dalam sebuah program di iPhone, anda'akan dapat menulis permainan yang spam orang-orang di latar belakang. I'm yakin anda benar-benar ingin memiliki spam dari teman-teman anda, "Try out permainan baru ini! Itu roxxers saya boxxers, dan anda akan juga! roxxersboxxers.com!!!! Jika anda mendaftar sekarang anda'll mendapatkan 3,200 RB poin!!"

Apple telah pembatasan secara otomatis (atau bahkan sebagian otomatis) SMS dan panggilan operasi. (Bayangkan jika permainan bukannya menelepon 911 pada waktu tertentu di malam hari)

Anda bertaruh terbaik adalah untuk mengatur perantara server di internet yang menggunakan online layanan pengiriman SMS dan mengirim SMS melalui rute itu jika anda membutuhkan otomatisasi lengkap. (ie, program anda pada iPhone mengirimkan suatu paket UDP ke server anda, yang mengirimkan SMS nyata)

iOS 4 Update

iOS 4, namun, sekarang menyediakan viewController anda dapat mengimpor ke aplikasi anda. Anda prepopulate SMS ladang, maka pengguna dapat memulai mengirim SMS dalam controller. Tidak seperti menggunakan "SMS:..." format url, hal ini memungkinkan aplikasi anda untuk tetap terbuka, dan memungkinkan anda untuk mengisi kedua untuk dan tubuh bidang. Anda bahkan dapat menentukan beberapa penerima.

Hal ini untuk mencegah aplikasi untuk mengirim SMS otomatis tanpa user secara eksplisit menyadari hal itu. Anda masih tidak dapat mengirim sepenuhnya otomatis SMS dari iPhone itu sendiri, itu memerlukan beberapa interaksi pengguna. Tapi ini setidaknya memungkinkan anda untuk mengisi segala sesuatu, dan menghindari penutupan aplikasi.

The MFMessageComposeViewController kelas didokumentasikan dengan baik, dan tutorial menunjukkan bagaimana mudahnya untuk melaksanakan.

iOS 5 Update

iOS 5, termasuk pesan untuk iPod touch dan perangkat iPad, jadi sementara aku've belum diuji ini sendiri, mungkin bahwa semua perangkat iOS akan dapat mengirim SMS melalui MFMessageComposeViewController. Jika hal ini terjadi, maka Apple menjalankan aplikasi SMS server yang mengirimkan pesan pada nama perangkat yang don't memiliki modem seluler.

iOS 6 Pembaruan

Tidak ada perubahan untuk kelas ini.

iOS 7 Update

Sekarang anda dapat memeriksa untuk melihat apakah pesan yang sedang anda gunakan akan menerima subjek atau lampiran, dan apa jenis lampiran itu akan menerima. Anda dapat mengedit subjek dan menambahkan lampiran ke pesan, di mana media yang memungkinkan.

Update iOS 8

Tidak ada perubahan untuk kelas ini.

Update iOS 9

Tidak ada perubahan untuk kelas ini.

iOS 10 Pembaruan

Tidak ada perubahan untuk kelas ini.

iOS 11 Pembaruan

Tidak ada perubahan yang signifikan untuk kelas ini

Keterbatasan untuk kelas ini

Perlu diingat bahwa ini tidak't bekerja pada ponsel tanpa iOS 4, dan itu tidak't bekerja pada iPod touch atau iPad, kecuali, mungkin, di bawah iOS 5. Anda harus mendeteksi perangkat dan iOS keterbatasan sebelum menggunakan controller ini, atau risiko membatasi aplikasi anda baru saja upgrade 3G, 3GS, dan iphone 4.

Namun, perantara server yang mengirim SMS akan memungkinkan setiap dan semua perangkat iOS ini untuk mengirim SMS selama mereka memiliki akses internet, sehingga mungkin masih menjadi solusi yang lebih baik untuk banyak aplikasi. Secara bergantian, gunakan kedua, dan hanya jatuh kembali untuk online layanan SMS bila perangkat doesn't mendukungnya.

Komentar (8)

Berikut adalah tutorial yang tidak persis apa yang anda cari untuk: MFMessageComposeViewController.

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

Pada dasarnya:

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

Dan link ke dokumen.

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

Komentar (4)
  1. Anda harus menambahkan MessageUI.kerangka untuk proyek Xcode anda
  2. Termasuk #import <MessageUI/MessageUI.h> di header file
  3. Tambahkan ini delegasi untuk header file MFMessageComposeViewControllerDelegate & UINavigationControllerDelegate
  4. Di IBAction metode mendeklarasikan instance dari MFMessageComposeViewController mengatakan messageInstance
  5. Untuk memeriksa apakah perangkat anda dapat mengirim pesan teks menggunakan [MFMessageComposeViewController canSendText] dalam kondisi jika, it'll kembali Ya/Tidak
  6. Di jika kondisi ini:
  7. Set pertama tubuh untuk messageInstance sebagai:

messageInstance.tubuh = @"Halo dari Shah";

  1. Kemudian memutuskan penerima pesan sebagai:

messageInstance.penerima = [NSArray arrayWithObjects:@"12345678", @"87654321", nil]; 3. Set delegasi untuk anda messageInstance sebagai:

messageInstance.messageComposeDelegate = self; 4. Di baris terakhir melakukan hal ini:

[self presentModalViewController:messageInstance animasi:YA];

Komentar (2)

Anda dapat menggunakan sms:[target nomor telepon] URL untuk membuka aplikasi SMS, tapi tidak ada indikasi tentang bagaimana untuk prefill SMS tubuh dengan teks.

Komentar (2)

Salah satu sistem komunikasi antar-proses di MacOS adalah XPC. Sistem ini lapisan telah dikembangkan untuk komunikasi inter-proses yang didasarkan pada transfer plist struktur yang menggunakan libSystem dan launchd. Pada kenyataannya, itu adalah sebuah antarmuka yang memungkinkan pengelolaan proses melalui pertukaran struktur seperti kamus. Karena faktor keturunan, iOS 5 memiliki mekanisme ini juga.

Anda mungkin sudah mengerti apa yang saya maksud dengan pengenalan ini. Yap, ada sistem pelayanan di iOS yang meliputi alat-alat untuk XPC komunikasi. Dan saya ingin memberikan contoh bekerja dengan daemon untuk mengirim SMS. Namun, harus disebutkan bahwa kemampuan ini adalah tetap di iOS 6, tetapi relevan untuk iOS 5.0—5.1.1. Jailbreak Pribadi, Kerangka, dan ilegal lainnya tidak diperlukan alat untuk eksploitasi. Hanya set dari header file dari direktori /usr/include/xpc/* yang dibutuhkan.

Salah satu elemen untuk mengirim SMS di iOS adalah sistem layanan com.apple.chatkit, tugas-tugas yang termasuk generasi, manajemen, dan mengirim pesan teks singkat. Untuk kemudahan kontrol, telah tersedia untuk publik komunikasi port com.apple.chatkit.clientcomposeserver.xpc. Menggunakan XPC subsistem, anda dapat menghasilkan dan mengirim pesan tanpa user's persetujuan.

Nah, let's mencoba untuk membuat sambungan.

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

Sekarang kita memiliki XPC koneksi myConnection set untuk layanan pengiriman SMS. Namun, XPC konfigurasi menyediakan untuk penciptaan ditangguhkan koneksi —kita perlu mengambil satu langkah lagi untuk aktivasi.

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

Koneksi diaktifkan. Tepat pada saat ini iOS 6 akan menampilkan pesan di telepon log bahwa komunikasi jenis ini dilarang. Sekarang kita perlu untuk menghasilkan sebuah kamus yang mirip dengan xpc_dictionary dengan data-data yang diperlukan untuk pengiriman pesan.

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

Sedikit yang tersisa: mengirim pesan ke XPC port dan pastikan itu disampaikan.

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

Yang's semua. SMS yang dikirim.

Komentar (4)

Tambahkan MessageUI.Kerangka dan gunakan kode berikut

#import  

Dan kemudian:

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

dan delegasi metode -

- (void)messageComposeViewController:(MFMessageComposeViewController *)controller
             didFinishWithResult:(MessageComposeResult)result {
      [self dismissViewControllerAnimated:YES completion:nil];
 }
Komentar (2)

Anda dapat menggunakan pendekatan ini:

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


iOS akan secara otomatis beralih dari aplikasi ke aplikasi pesan's pesan menulis halaman. Karena URL's skema dimulai dengan sms:, ini diidentifikasi sebagai jenis yang diakui oleh aplikasi pesan dan peluncuran itu.

Komentar (0)

Ikuti prosedur

1 .Tambahkan MessageUI.Kerangka untuk proyek

2 . Impor #import <MessageUI/MessageUI.h> di .h file.

3 . Copy kode ini untuk mengirimkan pesan

 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 . Menerapkan mendelegasikan metode jika anda ingin.

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

   ///your stuff here 

    [self dismissViewControllerAnimated:YES completion:nil];
}

Jalankan Dan PERGI!

Komentar (1)
//Add the Framework in .h file

#import 
#import 

//Set the delegate methods

UIViewController

//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]; 
}
Komentar (1)

Berikut ini adalah Swift versi kode untuk mengirim SMS di iOS. Harap dicatat bahwa ini hanya bekerja pada perangkat nyata. Kode diuji di iOS 7+. Anda dapat membaca lebih lanjut di sini.

  1. Membuat sebuah Class baru yang mewarisi MFMessageComposeViewControllerDelegate dan 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)
        }
}
  1. Bagaimana untuk menggunakan kelas ini:
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.")
    }
}
Komentar (0)
- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    UIImage *ui =resultimg.image;
    pasteboard.image = ui;
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]];
}
Komentar (2)

Ada kelas di iOS 4 yang mendukung pengiriman pesan dengan tubuh dan recipents dari aplikasi anda. Ia bekerja sama dengan mengirim e-mail. Anda dapat menemukan dokumentasi di sini: link text

Komentar (0)

//memanggil method dengan nama dan nomor.

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

}

//Metode untuk mengirim pesan

- (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];
 }
}
Komentar (0)

Jika anda ingin, anda dapat menggunakan pribadi kerangka CoreTelephony yang disebut CTMessageCenter kelas. Ada beberapa metode untuk mengirim sms.

Komentar (2)

Anda bisa menyajikan MFMessageComposeViewController, yang dapat mengirim SMS, tapi dengan pengguna prompt(dia keran tombol kirim). Ada cara untuk melakukan itu tanpa izin pengguna. Pada iOS 11, anda bisa membuat extension, yang bisa menjadi seperti filter untuk pesan masuk , mengatakan iOS baik itu berupa spam atau tidak. Tidak ada yang lebih banyak menggunakan SMS tidak bisa dilakukan

Komentar (1)
[[UIApplication sharedApplication]openURL:[NSURL URLWithString:@"sms:number"]] 

Ini akan menjadi yang terbaik dan cara singkat untuk melakukannya.

Komentar (0)

Gunakan ini:

- (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];
}
Komentar (0)

Anda perlu menggunakan MFMessageComposeViewController jika anda ingin menampilkan menciptakan dan mengirimkan pesan dalam aplikasi anda sendiri.

Jika tidak, anda dapat menggunakan sharedApplication metode.

Komentar (0)