ios - কিভাবে আইফোনের উপর প্রোগ্রাম এসএমএস পাঠাতে?




objective-c cocoa-touch (12)

অফিসিয়াল এসডিকে / কোকো টাচ দিয়ে iPhone থেকে কোনও প্রোগ্রাম এসএমএস পাঠানো সম্ভব কিনা তা কেউ জানেন কি?


বিধিনিষেধ

আপনি আইফোনের একটি প্রোগ্রামের মধ্যে একটি এসএমএস পাঠাতে পারলে, আপনি ব্যাকগ্রাউন্ডে স্প্যামগুলি স্প্যাম করতে এমন গেমগুলি লিখতে পারবেন। আমি নিশ্চিত যে আপনি সত্যিই আপনার বন্ধুদের কাছ থেকে স্প্যাম পেতে চান, "এই নতুন গেমটি চেষ্টা করুন! এটি আমার বক্সারদের রক্স্সার্স করে, এবং আপনারও হবে! Roxxersboxxers.com !!!! যদি আপনি এখন সাইন আপ করেন তবে আপনাকে 3,200 আরবি পাবেন পয়েন্ট !! "

অ্যাপল স্বয়ংক্রিয় (বা এমনকি আংশিক স্বয়ংক্রিয়) এসএমএস এবং ডায়ালিং অপারেশন জন্য সীমাবদ্ধতা আছে। (দিনের পরিবর্তে গেমটির পরিবর্তে 911 টি ডায়াল করা হয়েছে কিনা কল্পনা করুন)

আপনার সেরা বেতারটি ইন্টারনেটে একটি মধ্যবর্তী সার্ভার সেটআপ করা যা একটি অনলাইন এসএমএস পাঠানোর পরিষেবা ব্যবহার করে এবং যদি আপনি সম্পূর্ণ অটোমেশন প্রয়োজন হয় তবে সেই রুটের মাধ্যমে এসএমএস পাঠান। (অর্থাৎ, আইফোনের আপনার প্রোগ্রামটি আপনার সার্ভারে একটি UDP প্যাকেট পাঠায় যা আসল এসএমএস পাঠায়)

আইওএস 4 আপডেট

আইওএস 4, তবে, এখন আপনার viewController আমদানি করতে একটি viewController করে। আপনি এসএমএস ক্ষেত্র প্রিপোলেট করুন, তারপর ব্যবহারকারী নিয়ামক মধ্যে এসএমএস পাঠাতে শুরু করতে পারেন। "এসএমএস: ..." ইউআরএল ফরম্যাট ব্যবহার করার পরিবর্তে, এটি আপনার অ্যাপ্লিকেশনটি খোলা থাকতে দেয় এবং আপনাকে উভয় এবং শরীরের ক্ষেত্রগুলিকে ভাসিয়ে দেয়। আপনি এমনকি একাধিক প্রাপক উল্লেখ করতে পারেন।

এটি ব্যবহারকারীদের স্পষ্টভাবে এটি সম্পর্কে সচেতন না করে স্বয়ংক্রিয় SMS পাঠানোর থেকে অ্যাপ্লিকেশনগুলিকে আটকায়। আপনি এখনও আইফোন থেকে সম্পূর্ণরূপে স্বয়ংক্রিয় এসএমএস পাঠাতে পারবেন না, এটি কিছু ব্যবহারকারীর ইন্টারঅ্যাকশন প্রয়োজন। কিন্তু এই অন্তত আপনি সবকিছু ভরাট করতে পারবেন, এবং আবেদন বন্ধ এড়ানো।

MFMessageComposeViewController ক্লাসটি ভালভাবে নথিভুক্ত করা হয় এবং tutorials প্রয়োগ করা কত সহজ তা দেখায়।

আইওএস 5 আপডেট

আইওএস 5 আইপড স্পর্শ এবং আইপ্যাড ডিভাইসের জন্য মেসেজিং অন্তর্ভুক্ত করে, তাই আমি এখনও এটি পরীক্ষা করে নিচ্ছি না, তবে এটি হতে পারে যে সকল iOS ডিভাইসগুলি MFMessageComposeViewController এর মাধ্যমে এসএমএস পাঠাতে সক্ষম হবে। এই ক্ষেত্রে যদি, অ্যাপল একটি এসএমএস সার্ভার চালু করে যা এমন ডিভাইসগুলির পক্ষে বার্তা প্রেরণ করে যার কোন সেলুলার মডেম নেই।

আইওএস 6 আপডেট

এই ক্লাসে কোন পরিবর্তন।

আইওএস 7 আপডেট

আপনি এখন যে বার্তাটি ব্যবহার করছেন সেটি দেখতে কোনও বিষয় বা সংযুক্তি গ্রহণ করবে এবং এটি কোন ধরণের সংযুক্তি গ্রহণ করবে তা আপনি দেখতে পারবেন। আপনি বিষয়টি সম্পাদনা করতে এবং বার্তাটিতে সংযুক্তি যুক্ত করতে পারেন, যেখানে মাঝারি এটির অনুমতি দেয়।

আইওএস 8 আপডেট

এই ক্লাসে কোন পরিবর্তন।

iOS 9 আপডেট

এই ক্লাসে কোন পরিবর্তন।

আইওএস 10 আপডেট

এই ক্লাসে কোন পরিবর্তন।

আইওএস 11 আপডেট

এই ক্লাসে কোন উল্লেখযোগ্য পরিবর্তন

এই বর্গ সীমাবদ্ধতা

মনে রাখবেন যে এটি iOS 4 ছাড়া ফোনগুলিতে কাজ করবে না এবং এটি আইওএস স্পর্শ বা আইপ্যাডে কাজ করবে না, সম্ভবত iOS এর অধীনে 5। এটি ব্যবহার করার আগে আপনাকে ডিভাইসটি এবং iOS সীমাবদ্ধতা সনাক্ত করতে হবে। নিয়ামক, অথবা আপনার অ্যাপ্লিকেশনটিকে সাম্প্রতিক আপগ্রেড 3 জি, 3 জিএস এবং 4 আইফোনগুলিতে সীমাবদ্ধ করে।

যাইহোক, এসএমএস পাঠানোর মধ্যবর্তী সার্ভারটি যেকোনো এবং এই সমস্ত iOS ডিভাইসগুলিকে ইন্টারনেট অ্যাক্সেস যতক্ষণ পর্যন্ত এসএমএস পাঠাতে অনুমতি দেয়, তাই এটি এখনও অনেক অ্যাপ্লিকেশনের জন্য একটি ভাল সমাধান হতে পারে। বিকল্পভাবে, উভয় ব্যবহার করুন, এবং ডিভাইসটি যখন এটি সমর্থন করে না তখন কেবলমাত্র একটি অনলাইন এসএমএস পরিষেবায় পড়ে।


  1. আপনাকে অবশ্যই আপনার Xcode প্রকল্পে MessageUI.framework যুক্ত করতে হবে
  2. আপনার শিরোনাম ফাইলের মধ্যে একটি #import <MessageUI/MessageUI.h> অন্তর্ভুক্ত করুন
  3. আপনার হেডার ফাইলটিতে এই প্রতিনিধিদের যুক্ত করুন MFMessageComposeViewControllerDelegate & UINavigationControllerDelegate
  4. আপনার IBAction পদ্ধতিতে IBAction উদাহরণ ঘোষণা ঘোষণা messageInstance
  5. যদি আপনার ডিভাইস [MFMessageComposeViewController canSendText] পাঠ্য ব্যবহার [MFMessageComposeViewController canSendText] পাঠাতে পারে কিনা তা যাচাই করতে, এটি হ্যাঁ / না ফিরে আসবে
  6. if শর্ত থাকে তবে এইগুলি করুন:

    1. আপনার messageInstance জন্য প্রথম সেট শরীরের হিসাবে:

      messageInstance.body = @"Hello from Shah";
    2. তারপরে বার্তাটির প্রাপক হিসাবে এই সিদ্ধান্ত নিন:

      messageInstance.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321",         nil];
    3. আপনার বার্তা একটি প্রতিনিধি সেট করুন যেমন:

      messageInstance.messageComposeDelegate = self;
    4. শেষ লাইন এই কাজ করে:

      [self presentModalViewController:messageInstance animated:YES];

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

আইওএস 4 তে একটি শ্রেণী রয়েছে যা আপনার অ্যাপ্লিকেশন থেকে শরীর এবং রেসিপিকারীদের সাথে বার্তা পাঠাতে সহায়তা করে। এটি মেইল ​​পাঠানোর মতোই কাজ করে। আপনি এখানে ডকুমেন্টেশন খুঁজে পেতে পারেন: লিঙ্ক টেক্সট


আপনি MFMessageComposeViewController উপস্থাপন করতে পারেন যা এসএমএস পাঠাতে পারে, তবে ব্যবহারকারীর প্রম্পট সহ (সেটি প্রেরণ করুন বোতামটি)। ব্যবহারকারী অনুমতি ছাড়া যে কোন উপায়। আইওএস 11 এ আপনি এক্সটেনশান তৈরি করতে পারেন, যা ইনকামিং বার্তাগুলির জন্য ফিল্টারের মতো হতে পারে, iOS কে স্প্যাম বা না বলে। এসএমএস দিয়ে আর কিছু করা যাবে না


আপনি এই পদ্ধতি ব্যবহার করতে পারেন:

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


আইওএস স্বয়ংক্রিয়ভাবে আপনার অ্যাপ থেকে বার্তা অ্যাপের বার্তা রচনা পৃষ্ঠাতে নেভিগেট করবে। যেহেতু ইউআরএল এর স্কিমটি এসএমএস দিয়ে শুরু হয়: এটি একটি ধরনের রূপ হিসাবে চিহ্নিত করা হয়েছে যা বার্তা অ্যাপ্লিকেশন দ্বারা স্বীকৃত এবং এটি চালু করে।


এখানে একটি টিউটোরিয়াল যা আপনি যা খুঁজছেন তা ঠিক করে: 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


এটা ব্যবহার কর:

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

ম্যাকওএস-এ ইন্টার-প্রসেস কমিউনিকেশন সিস্টেমগুলির মধ্যে একটি হল এক্সপিসি। Libsystem এবং laund ব্যবহার করে প্লাস্টার স্ট্রাকচারের স্থানান্তর উপর ভিত্তি করে আন্তঃ-প্রক্রিয়া যোগাযোগের জন্য এই সিস্টেম স্তরটি উন্নত করা হয়েছে। আসলে, এটি একটি ইন্টারফেস যা অভিধানগুলির মতো স্ট্রাকচারগুলি বিনিময় করে পরিচালনা প্রক্রিয়াগুলিকে অনুমোদন করে। বংশবৃদ্ধি কারণে, আইওএস 5 পাশাপাশি এই প্রক্রিয়া আছে।

আপনি ইতিমধ্যে এই ভূমিকা দ্বারা আমি কি বোঝাতে পারে। হ্যাঁ, আইওএসগুলিতে সিস্টেম পরিষেবাদি রয়েছে যা এক্সপিসি যোগাযোগের জন্য সরঞ্জামগুলি অন্তর্ভুক্ত করে। এবং আমি এসএমএস পাঠানোর জন্য একটি ডেমনের সাথে কাজটি উদাহরণস্বরূপ উদাহরণ দিতে চাই। যাইহোক, এটি উল্লেখ করা উচিত যে এই ক্ষমতাটি iOS 6 এ সংশোধন করা হয়েছে, তবে iOS 5.0-5.1.1 এর জন্য উপযুক্ত। Jailbreak, ব্যক্তিগত ফ্রেমওয়ার্ক, এবং অন্যান্য অবৈধ সরঞ্জাম তার শোষণের জন্য প্রয়োজন হয় না। শুধুমাত্র ডিরেক্টরি / usr / include / xpc / * থেকে শিরোনাম ফাইলের সেট প্রয়োজন।

আইওএস এ এসএমএস পাঠানোর উপাদানগুলির মধ্যে একটি হল সিস্টেম পরিষেবা com.apple.chatkit, যার কাজগুলি হল প্রজন্ম, ব্যবস্থাপনা এবং সংক্ষিপ্ত পাঠ্য বার্তা পাঠানো। নিয়ন্ত্রণের সহজতার জন্য, এটি সর্বজনীনভাবে উপলব্ধ যোগাযোগ পোর্ট com.apple.chatkit.clientcomposeserver.xpc আছে। XPC সাব-সিস্টেম ব্যবহার করে, আপনি ব্যবহারকারীর অনুমোদন ছাড়াই বার্তাগুলি তৈরি এবং প্রেরণ করতে পারেন।

আচ্ছা, এর একটি সংযোগ তৈরি করার চেষ্টা করি।

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

এখন আমাদের কাছে এক্সপিসি সংযোগ myConnection এসএমএস পাঠানোর পরিষেবা সেট করা আছে। যাইহোক, এক্সপিসি কনফিগারেশন স্থগিত সংযোগ তৈরির জন্য প্রদান করে - আমাদের সক্রিয়করণের জন্য আরও একটি পদক্ষেপ নিতে হবে।

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

সংযোগ সক্রিয় করা হয়। এই মুহুর্তে আইওএস 6 টেলিফোন লগে একটি বার্তা প্রদর্শন করবে যে এই ধরনের যোগাযোগ নিষিদ্ধ। বার্তা প্রেরণের জন্য প্রয়োজনীয় তথ্য সহ এখন আমরা xpc_dictionary এর মতো একটি অভিধান তৈরি করতে হবে।

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

লিটল বাকি: এক্সপিসি পোর্টে বার্তা পাঠান এবং এটি বিতরণ করা হয় তা নিশ্চিত করুন।

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

এখানেই শেষ. এসএমএস পাঠানো হয়েছে।


যদি আপনি তৈরি এবং আপনার নিজের অ্যাপ্লিকেশানে বার্তা প্রেরণ করতে চান তবে MFMessageComposeViewController ব্যবহার করতে হবে।

অন্যথা, আপনি শেয়ার করা অ্যাপ্লিকেশন পদ্ধতি ব্যবহার করতে পারেন।


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

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






sms