Soru İPhone'da programlı olarak SMS göndermek nasıl?


Mümkün olduğunda ve nasıl programlı olarak gönderileceğini bilen var mı? SMS itibaren iPhoneresmi SDK / Cocoa Touch ile mi?


497
2017-08-14 09:51


Menşei


Ios 4'de sms kodunu gönderebilirsiniz ancak sorun uygulamanız kapalı olacaktır - Pankaj Kainthla
Resmi SDK'yı kullanmak başkaları için bir gereklilik değilse, Twilio'yu kullanarak bunu nasıl yapacağınızı göstermek için bu yazıyı yazdım: twilio.com/blog/2016/11/... - Megan Speir
gmail'inizden bir Google e-tablosu oluşturabilir, istediğiniz alanları oluşturabilir ve tools->script editor ve bir POST isteği kullanımında MailApp.sendEmail Bir telefon numarasına e-posta göndermek için api. att's YOURNUMBER@mms.att.net, tmobile'in YOURNUMBER@tmomail.net olduğunu düşünüyorum (ALL FREE) - Coty Embry


Cevaplar:


Kısıtlamalar

İPhone'da bir program içinde bir SMS gönderebilirseniz, arka planda insanları spam yapan oyunlar yazabilirsiniz. Eminim arkadaşlarınızdan gelen spam'lere sahip olmak istediğinize eminim, "Bu yeni oyunu deneyin! Bu benim boxxers'ımı roxxers ve siz de olacak! Roxxersboxxers.com !!!! Şimdi kaydolursanız 3.200 RB elde edersiniz. noktaları !!"

Apple'ın otomatik (veya kısmen otomatik) SMS ve arama işlemleri için kısıtlamaları vardır. (Bunun yerine oyunun belirli bir saatte 911'i aradığını düşünün)

En iyi seçeneğiniz, internet üzerinden bir çevrimiçi SMS gönderim hizmeti kullanan bir ara sunucu kurmak ve tam otomasyona ihtiyacınız varsa, bu yolla SMS'leri göndermek. (yani, iPhone'daki programınız sunucunuza gerçek SMS gönderen bir UDP paketi gönderir)

iOS 4 Güncellemesi

Ancak, iOS 4, şimdi uygulamanıza aktaracağınız bir viewcontroller sağlıyor. SMS alanlarını önceden doldurduğunuzda, kullanıcı SMS göndericisini denetleyicide başlatabilir. "Sms: ..." url biçiminin kullanılmasından farklı olarak, bu, uygulamanızın açık kalmasını sağlar ve her ikisini de için ve vücut alanlar. Hatta birden çok alıcı belirtebilirsiniz.

Bu, uygulamaların kullanıcı tarafından açıkça fark edilmeden otomatik SMS göndermesini engeller. İPhone'dan hala tam otomatik SMS gönderemiyorsunuz, bazı kullanıcı etkileşimi gerektiriyor. Ancak bu en azından her şeyi doldurmanıza izin verir ve uygulamayı kapatmanızı önler.

MFMessageComposeViewController sınıf iyi belgelenmiş ve öğreticiler Uygulamanın ne kadar kolay olduğunu göster.

iOS 5 Güncellemesi

iOS 5, iPod touch ve iPad cihazları için mesajlaşmayı içerir, bu yüzden henüz kendim test etmemişken, tüm iOS cihazların MFMessageComposeViewController üzerinden SMS gönderebileceği olabilir. Durum buysa, Apple hücresel modeme sahip olmayan aygıtlar adına ileti gönderen bir SMS sunucusu çalıştırıyor.

iOS 6 Güncellemesi

Bu sınıfa bir değişiklik yok.

iOS 7 Güncellemesi

Şimdi kullandığınız mesaj ortamının bir konu veya ekleri kabul edip edemeyeceğini ve ne tür ekler kabul edeceğini kontrol edebilirsiniz. Konuyu düzenleyebilir ve eklerin ortama izin verdiği mesaja ekleyebilirsiniz.

iOS 8 Güncellemesi

Bu sınıfa bir değişiklik yok.

iOS 9 Güncellemesi

Bu sınıfa bir değişiklik yok.

iOS 10 Güncellemesi

Bu sınıfa bir değişiklik yok.

iOS 11 Güncellemesi

Bu sınıfa önemli bir değişiklik yok

Bu sınıfa sınırlamalar

Bunun iOS 4 olmayan telefonlarda çalışmayacağını ve iPod touch veya iPad'de çalışmayacağını unutmayın. Ancak iOS 5 dışında, cihazınızı ve iOS sınırlamalarını kullanmanız gerekir. Uygulamanızı son zamanlarda yükseltilen 3G, 3GS ve 4 iPhone'lara kısıtlayan kontrol cihazı veya risk.

Ancak, SMS gönderen bir ara sunucu, bu iOS cihazların herhangi birinin ve hepsinin internet erişimi olduğu sürece SMS göndermesine izin verecektir, bu yüzden birçok uygulama için daha iyi bir çözüm olabilir. Alternatif olarak, her ikisini de kullanın ve cihaz desteklemediğinde sadece bir çevrimiçi SMS servisine geri dönün.


384
2017-09-12 15:00



Ve eğer bu alanı satın alırsanız, asla size aynı şekilde bakmayacağım. - Adam Davis
Sanırım bu postayı birileri spam olarak işaretlemek ironik. Çizgiler, halklar arasında okuyun! - Randolpho
-1 çünkü bu spekülasyon olarak okunuyor. Ayrıca, Jus 'Wondrin' ve rydgaze'in uygulama içi SMS'leri nasıl göndereceğine dair cevaplarını inceleyin. - Frank Shearar
@Frank - Yeni iOS 4 özelliklerini yansıtmak için yazarımı güncelledi. İstek dolgun ifadeler kaldırıldı. - Adam Davis
Bu yayının yeni iOS sürümleri için güncel kalmasını gerçekten takdir ediyorum. :) - Ciryon


İşte tam olarak aradığınız şeyi yapan bir öğretici: MFMessageComposeViewController.

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

esasen:

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

Ve dokümanlar için bir bağlantı.

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


136
2017-07-24 19:09



yine de, SMS formu açılır. Arka planda göndermek için herhangi bir yol? - Raptor
Twilio gibi bir hizmeti kullanarak arka planda SMS gönderebilirsiniz, ancak kullanıcının telefon numarasından göndermek istiyorsanız, yukarıdaki yöntemle mesajı onaylamanız gerekir. - Daniel Amitay
Yukarıdaki kodu kullanan herkes MFMessageComposeViewController *controller = ... if bloğunun içinde. (sınıf yönteminin testi yapmak için bir örneği olması gerekmez) - unsynchronized
Bağlantı http://blog.mugunthkumar.com/coding/iphone-tutorial-how-to-send-in-app-sms/ dizüstü bilgisayarımda "502 Bad Gateway" yazıyor. Belki de bağlantı bozulur. - Nikita Vlasenko


  1. MessageUI.framework'ı Xcode projenize eklemelisiniz.
  2. Dahil et #import <MessageUI/MessageUI.h> başlık dosyasında
  3. Bu delegeleri başlık dosyanıza ekleyin MFMessageComposeViewControllerDelegate  & UINavigationControllerDelegate
  4. Senin içinde IBAction yöntem beyanı örneği MFMessageComposeViewController söylemek messageInstance
  5. Cihazınızın metin kullanıp kullanamadığını kontrol etmek için [MFMessageComposeViewController canSendText] bir durumda, Evet / Hayır dönecektir
  6. İçinde if koşulu yap:

    1. Senin için ilk set vücut messageInstance gibi:

      messageInstance.body = @"Hello from Shah";
      
    2. Ardından mesajın alıcılarına şu şekilde karar verin:

      messageInstance.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321",         nil];
      
    3. MessageInstance olarak bir temsilci ayarlayın:

      messageInstance.messageComposeDelegate = self;
      
    4. Son satırda şunu yapın:

      [self presentModalViewController:messageInstance animated:YES];
      

98
2017-12-07 16:50



Sürüm notu: presentModalViewController:animated: kullanımdan kaldırıldı; kullanım presentViewController:animated:completion: yerine. Ayrıca, temsilci yöntemini tanımlamayı da unutmayın - (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result Eğer sonuçları bilmek istiyorsan. - Raptor
Lütfen kodu test için koyun. @Najeebullah Shah burada veya github içinde. - YumYumYum


Kullanabilirsiniz sms:[target phone number] SMS uygulamasını açmak için URL, ancak bir SMS gövdesini önceden metin ile doldurma hakkında herhangi bir gösterge yoktur. bu gönderi Apple Geliştirici Forumları).


48
2017-09-12 14:41



rea-native-communications, sms açılırken metni önceden doldurmak için & body = parametresini kullanır: iOS için targetphonenumber & body = textyouwanttoprefile - Doug Voss


MacOS'ta süreçler arası iletişim sistemlerinden biri XPC'dir. Bu sistem katmanı, libSystem ve launchd kullanılarak plist yapıların aktarılmasına dayanan süreçler arası iletişim için geliştirilmiştir. Aslında, bu tür yapıların sözlükler olarak değişimi yoluyla süreçlerin yönetilmesine izin veren bir arabirimdir. Kalıtım nedeniyle, iOS 5 bu mekanizmaya da sahiptir.

Bu giriş ile ne demek istediğimi zaten anlayabilirsiniz. Evet, iOS'ta XPC iletişimi için araçlar içeren sistem hizmetleri vardır. Ben de SMS gönderimi için çalışmayı örnek olarak görmek istiyorum. Ancak, bu yeteneğin iOS 6'da sabit olduğu, ancak iOS 5.0 - 5.1.1 ile ilgili olduğu belirtilmelidir. Jailbreak, Özel Çerçeve ve diğer yasadışı araçlar, sömürüsü için gerekli değildir. Sadece / usr / include / xpc / * dizinindeki header dosyalarına ihtiyaç vardır.

İOS'ta SMS gönderme öğelerinden biri, kısa metin iletilerinin oluşturulması, yönetimi ve gönderilmesini içeren sistem hizmeti com.apple.chatkit'tir. Kontrol kolaylığı için, kamuya açık iletişim portu com.apple.chatkit.clientcomposeserver.xpc. XPC alt sistemini kullanarak, kullanıcının onayı olmadan mesajlar oluşturabilir ve gönderebilirsiniz.

Peki, bir bağlantı oluşturmaya çalışalım.

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

Şimdi benim SMSn gönderim hizmetine ayarlanmış XPC bağlantısına sahibiz. Ancak, XPC yapılandırması askıya alınmış bağlantıların oluşturulmasını sağlar - etkinleştirme için bir adım daha atmamız gerekir.

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

Bağlantı etkinleştirildi. Şu anda iOS 6, telefon görüşmesinde bu tür bir iletişimin yasak olduğunu belirten bir mesaj gösterecektir. Artık, xpc_dictionary öğesine benzer bir mesajı, mesaj gönderimi için gereken verilerle oluşturmamız gerekiyor.

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

Az kaldı: mesajı XPC bağlantı noktasına gönderin ve teslim edildiğinden emin olun.

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

Bu kadar. SMS gönderildi.


25
2017-10-25 07:17



SMS göndermek için XPC kullanmamalısınız. Üretilen uygulama Apple tarafından onaylanmayacaktır. MessageUI Framework yerine kullanın - Raptor


MessageUI.Framework ekleyin ve aşağıdaki kodu kullanın

#import <MessageUI/MessageUI.h> 

Ve sonra:

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

ve temsilci yöntemi

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

21
2018-05-10 21:38



hey bu harika, ama bu işlevselliği arka plandan yapabilir miyiz? - Raj
Apple, kullanıcı onayı olmadan mesaj göndermenize izin vermez. Düğmeye manuel olarak basarak mesaj / posta göndermelidir. Alternatif olarak, arka ucunuza e-posta / numara göndererek ve göndererek özel bir servis kullanabilirsiniz. Buna rağmen bunu doğrudan iPhone'da yapamazsınız - Bharat Gulati


Bu yaklaşımı kullanabilirsiniz:

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


iOS, uygulamanızdan otomatik olarak mesaj uygulamasının mesaj oluşturma sayfasına gider. URL'nin şeması sms ile başlayacağından: mesajlar uygulaması tarafından tanınan ve başlatılan bir tür olarak tanımlanır.


19
2018-02-26 07:13





Bu prosedürleri takip edin

1. Ek MessageUI.Framework projeyeenter image description here

2. İthalat #import <MessageUI/MessageUI.h> .h dosyasında.

3 Mesaj göndermek için bu kodu kopyala

 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. uygulamak delegate eğer istersen.

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


   ///your stuff here 

    [self dismissViewControllerAnimated:YES completion:nil];
}

Koş ve git!


12
2017-07-29 10:32



muhtemelen denemek isteyeceğinizden bahsetmeye değer [self dismissViewControllerAnimated:YES completion:nil]; içeride messageComposeViewController: didFinishWithResult: geri arama yöntemi. Else sadece orada asılı kalacak. - SaltyNuts