[ios] كيفية إرسال الرسائل القصيرة برمجيا على iPhone؟


8 Answers

هنا هو البرنامج التعليمي الذي يفعل بالضبط ما كنت تبحث عنه: MFMessageComposeViewController .

tutorials

بشكل أساسي:

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

ووصلة إلى المستندات.

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

Question

هل يعرف أي شخص ما إذا كان ذلك ممكنًا ، وكيف ، لإرسال رسالة نصية من جهاز iPhone ، مع SDK / Cocoa Touch الرسمي؟




إضافة MessageUI.Framework واستخدام التعليمة البرمجية التالية

#import <MessageUI/MessageUI.h> 

وثم:

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

وطريقة مندوب -

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



تحتاج إلى استخدام MFMessageComposeViewController إذا كنت تريد إظهار إنشاء الرسالة وإرسالها في التطبيق الخاص بك.

خلاف ذلك ، يمكنك استخدام طريقة sharedApplication .




يمكنك استخدام رسالة نصية sms:[target phone number] عنوان URL sms:[target phone number] لفتح تطبيق الرسائل القصيرة SMS ، ولكن لا توجد مؤشرات على كيفية ملاءمة نص SMS بشكل مسبق مع النص (راجع هذه المشاركة في منتديات مطوري Apple).




اتبع هذه الإجراءات

1. إضافة MessageUI.Framework إلى المشروع

2. استيراد #import <MessageUI/MessageUI.h> في ملف .h.

3. انسخ هذا الرمز لإرسال الرسالة

 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. تنفيذ أسلوب delegate إذا كنت تريد.

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


   ///your stuff here 

    [self dismissViewControllerAnimated:YES completion:nil];
}

تشغيل و اذهب!




إذا كنت تريد ، يمكنك استخدام الإطار الخاص CoreTelephony الذي يسمى CTMessageCenter . هناك عدة طرق لإرسال الرسائل القصيرة.




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

هذا سيكون أفضل وأفضل طريقة للقيام بذلك.




- (void)sendSMS:(NSString *)bodyOfMessage recipientList:(NSArray *)recipients
{
    UIPasteboard *pasteboard = [UIPasteboard generalPasteboard];
    UIImage *ui =resultimg.image;
    pasteboard.image = ui;
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:"]];
}



إليك إصدار Swift من الشفرة لإرسال الرسائل القصيرة SMS في iOS. يرجى ملاحظة أنه يعمل فقط في الأجهزة الحقيقية. تم اختبار الرمز في iOS 7+. يمكنك قراءة المزيد here .

1) إنشاء فئة جديدة ترث MFMessageComposeViewControllerDelegate و 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) كيفية استخدام هذا الصف:

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.")
    }
}



Related