Apakah ada yang tahu jika itu's mungkin, dan bagaimana, untuk pemrograman mengirim SMS dari iPhone
, dengan resmi SDK / Cocoa Touch?
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, 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, 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.
Tidak ada perubahan untuk kelas ini.
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.
Tidak ada perubahan untuk kelas ini.
Tidak ada perubahan untuk kelas ini.
Tidak ada perubahan untuk kelas ini.
Tidak ada perubahan yang signifikan 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.
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
#import <MessageUI/MessageUI.h>
di header fileMFMessageComposeViewControllerDelegate
& UINavigationControllerDelegate
IBAction
metode mendeklarasikan instance dari MFMessageComposeViewController
mengatakan messageInstance
[MFMessageComposeViewController canSendText]
dalam kondisi jika, it'll kembali Ya/Tidak jika
kondisi ini:messageInstance
sebagai:messageInstance.tubuh = @"Halo dari Shah";
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];
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.
Tambahkan MessageUI.Kerangka dan gunakan kode berikut
#import <MessageUI/MessageUI.h>
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];
}
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.
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!
//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];
}
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.
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)
}
}
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.")
}
}
- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
UIImage *ui =resultimg.image;
pasteboard.image = ui;
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]];
}
//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];
}
}
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
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];
}