프로그래밍 방식으로 iPhone에서 SMS를 보내는 방법은 무엇입니까? 를 보낼 수 있는지, 그리고 어떻게 프로그래밍

공식 SDK / Cocoa Touch를 사용 하여의 프로그래밍 방식으로 SMS 를 보낼 수 있는지, 그리고 어떻게 프로그래밍 방식으로 SMS 를 보낼 수 있는지 아는 사람이 iPhone있습니까?



답변

제한 사항

iPhone의 프로그램 내에서 SMS를 보낼 수 있다면 백그라운드에서 사람들을 스팸으로 만드는 게임을 작성할 수 있습니다. 당신은 정말로 당신의 친구로부터 스팸을 원한다고 확신합니다. “이 새로운 게임을 시도하십시오! 포인트들!!”

Apple은 자동 (또는 부분적으로 자동화 된) SMS 및 전화 걸기 작업에 대한 제한이 있습니다. (게임이 특정 시간에 911로 전화 한 경우를 상상해보십시오)

가장 좋은 방법은 온라인 SMS 전송 서비스를 사용하는 인터넷에 중간 서버를 설정하고 완전한 자동화가 필요한 경우 해당 경로를 통해 SMS를 보내는 것입니다. (즉, iPhone의 프로그램이 UDP 패킷을 서버로 보내면 실제 SMS가 전송됩니다)

iOS 4 업데이트

그러나 iOS 4는 이제 viewController응용 프로그램으로 가져올 수 있는 기능 을 제공합니다 . SMS 필드를 미리 채우면 사용자가 컨트롤러 내에서 SMS 전송을 시작할 수 있습니다. “SMS : …”url 형식을 사용하는 것과 달리 응용 프로그램을 계속 열어두고받는 사람 및 본문 필드 모두 채울 수 있습니다 . 여러 수신자를 지정할 수도 있습니다.

따라서 사용자가 명시 적으로 인식하지 않고도 응용 프로그램이 자동 SMS를 보내지 못하게됩니다. 여전히 iPhone 자체에서 완전 자동화 된 SMS를 보낼 수 없으며 일부 사용자 상호 작용이 필요합니다. 그러나 이것은 적어도 모든 것을 채우고 응용 프로그램을 닫지 않도록합니다.

MFMessageComposeViewController의 클래스는 잘 설명하고, 튜토리얼 이 구현하는 것이 얼마나 쉬운 지 보여줍니다.

iOS 5 업데이트

iOS 5에는 iPod touch 및 iPad 장치 용 메시지가 포함되어 있으므로 아직 직접 테스트하지는 않았지만 모든 iOS 장치가 MFMessageComposeViewController를 통해 SMS를 보낼 수 있습니다. 이 경우 Apple은 셀룰러 모뎀이없는 장비 대신 메시지를 보내는 SMS 서버를 실행 중입니다.

iOS 6 업데이트

이 수업에는 변화가 없습니다.

iOS 7 업데이트

이제 사용중인 메시지 매체가 제목이나 첨부 파일을 허용하는지, 어떤 첨부 파일을 허용하는지 확인할 수 있습니다. 제목을 편집하고 매체가 허용하는 메시지에 첨부 파일을 추가 할 수 있습니다.

iOS 8 업데이트

이 수업에는 변화가 없습니다.

iOS 9 업데이트

이 수업에는 변화가 없습니다.

iOS 10 업데이트

이 수업에는 변화가 없습니다.

iOS 11 업데이트

이 수업에 큰 변화가 없습니다

이 수업에 대한 제한

iOS 4가없는 전화에서는 작동하지 않으며, iOS 5에서는 iPod touch 또는 iPad에서는 작동하지 않습니다.이 기능을 사용하기 전에 장치 및 iOS 제한을 감지해야합니다. 앱을 최근에 업그레이드 한 3G, 3GS 및 4 iPhone으로 제한 할 수 있습니다.

그러나 SMS를 보내는 중간 서버는 인터넷에 액세스 할 수있는 한 이러한 모든 iOS 장치가 SMS를 보낼 수 있도록 허용하므로 많은 응용 프로그램에서 여전히 더 나은 솔루션 일 수 있습니다. 또는 둘 다 사용하고 장치가 지원하지 않는 경우에만 온라인 SMS 서비스로 폴백합니다.


답변

다음은 원하는 것을 정확하게 수행하는 자습서입니다 MFMessageComposeViewController.

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

본질적으로 :

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


답변

  1. MessageUI.framework를 Xcode 프로젝트에 추가해야합니다
  2. 포함 #import <MessageUI/MessageUI.h> 헤더 파일을
  3. 이 대리자를 헤더 파일에 추가하고 MFMessageComposeViewControllerDelegate &UINavigationControllerDelegate
  4. 당신의 IBAction방법에서 MFMessageComposeViewControllersay의 인스턴스를 선언messageInstance
  5. 장치가 [MFMessageComposeViewController canSendText]if 조건에서 텍스트 사용 을 보낼 수 있는지 확인하기 위해 Yes / No를 반환합니다
  6. 에서 if조건이 작업을 수행합니다

    1. 당신의 몸을 먼저 설정하십시오 messageInstance:

      messageInstance.body = @"Hello from Shah";
    2. 그런 다음 메시지 수신자를 다음과 같이 결정하십시오.

      messageInstance.recipients = [NSArray arrayWithObjects:@"12345678", @"87654321",         nil];
    3. messageInstance의 위임을 다음과 같이 설정하십시오.

      messageInstance.messageComposeDelegate = self;
    4. 마지막 줄에서 다음을 수행하십시오.

      [self presentModalViewController:messageInstance animated:YES];

답변

sms:[target phone number]URL을 사용하여 SMS 응용 프로그램을 열 수 있지만 SMS 본문에 텍스트를 미리 채우는 방법에 대한 표시는 없습니다.


답변

MacOS의 프로세스 간 통신 시스템 중 하나는 XPC입니다. 이 시스템 계층은 libSystem을 사용하여 plist 구조의 전송을 기반으로 프로세스 간 통신을 위해 개발되었으며 시작되었습니다. 실제로 사전과 같은 구조의 교환을 통해 프로세스를 관리 할 수있는 인터페이스입니다. 유전성으로 인해 iOS 5에도이 메커니즘이 있습니다.

이 소개의 의미를 이미 이해했을 것입니다. 그러나 iOS에는 XPC 통신 도구가 포함 된 시스템 서비스가 있습니다. 그리고 SMS 전송을위한 데몬으로 작업을 보여주고 싶습니다. 그러나이 기능은 iOS 6에서 고정되어 있지만 iOS 5.0-5.1.1과 관련이 있습니다. 탈옥, 개인 프레임 워크 및 기타 불법 도구는 악용 될 필요가 없습니다. / usr / include / xpc / * 디렉토리의 헤더 파일 세트 만 필요합니다.

iOS에서 SMS를 전송하기위한 요소 중 하나는 시스템 서비스 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);

이제 XPC 연결 myConnection이 SMS 전송 서비스로 설정되었습니다. 그러나 XPC 구성은 일시 중단 된 연결을 만들 수 있도록하기 위해 활성화 단계를 한 단계 더 수행해야합니다.

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

연결이 활성화되었습니다. 현재 iOS 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 포트로 전송하고 전달되었는지 확인하십시오.

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

그게 다야. SMS를 보냈습니다.


답변

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


답변

이 방법을 사용할 수 있습니다 :

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

iOS는 앱에서 메시지 앱의 메시지 작성 페이지로 자동 탐색합니다. URL 스킴은 sms :로 시작하기 때문에 메시지 앱에서 인식하고이를 실행하는 유형으로 식별됩니다.