2017-02-16 6 views
1

Я пытаюсь отправить смс и использовать этот код:Swift 3,0: Отправить SMS Ошибка

import UIKit 
import MessageUI 

class ViewController: UIViewController { 

override func viewDidLoad() { 
super.viewDidLoad() 
} 

override func didReceiveMemoryWarning() { 
super.didReceiveMemoryWarning() 
} 

@IBAction func sendMessage(_ sender: UIButton) { 

let messageVC = MFMessageComposeViewController() 
messageVC.body = "For a good time call!" 
messageVC.recipients = ["79161887060"] 
messageVC.messageComposeDelegate = self 

self.present(messageVC, animated: true, completion: nil) 
} 
} 

extension ViewController: MFMessageComposeViewControllerDelegate { 
func messageComposeViewController(_ controller:  MFMessageComposeViewController, didFinishWith result: MessageComposeResult) { 
switch (result.rawValue) { 
case MessageComposeResult.cancelled.rawValue: 
    print("Message was cancelled") 
    self.dismiss(animated: true, completion: nil) 
case MessageComposeResult.failed.rawValue: 
    print("Message failed") 
    self.dismiss(animated: true, completion: nil) 
case MessageComposeResult.sent.rawValue: 
    print("Message was sent") 
    self.dismiss(animated: true, completion: nil) 
default: 
    break; 
} 
} 
} 

Построить успешно, но когда я хочу, нажав на кнопку (действие, чтобы отправить смс) - отладчик собирается AppDelegate файл и останавливается там:

Error Aouput

Вход здесь:

2017-02-16 14: 06: 13,171616 R егистрация [24422: 1035557] пучок: XLab.Регистрация, enable_level: 0, persist_level: 0, propagate_with_activity: 0 2017-02-16 14: 06: 13.172031 Регистрация [24422: 1035557] подсистема: com.apple.siri, категория: Intents, enable_level: 1, persist_level: 1, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0 2017-02-16 14: 06: 13.177495 Регистрация [ 24422: 1035645] Подсистема: com.apple.UIKit, категория: HIDEventFiltered, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 2017-02-16 14: 06: 13.180083 Регистрация [24422: 1035645] подсистема: com.apple.UIKit, категория: HIDEventIncoming, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 2017-02-16 14: 06: 13.190296 Регистрация [24422: 1035635] подсистема: com.apple.BaseBoard, категория: MachPort, enable_level: 1, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0 2017-02-16 14: 06: 13.204079 Регистрация [24422: 1035557] подсистема: com.apple.UIKit, категория: StatusBar, enable_level: 0, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 2017-02-16 14: 06: 13.296657 Регистрация [24422: 1035557] Подсистема: com.apple.UIKit, категория: GestureEnvironment, enable_level: 0, persist_level: 0, default_ttl: 1, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 2017- 02-16 14: 06: 13.316493 Регистрироваться ration [24422: 1035557] Подсистема: com.apple.BackBoardServices.fence, категория: Приложение, enable_level: 1, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0 2017-02-16 14: 06: 14.350494 Подсистема: [ru]: [ debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 2017-02-16 14: 06: 14.351481 Регистрация [24422: 1035557] подсистема: com.apple.UIKit, категория: Жест, enable_level: 0, persist_level: 0, default_ttl: 1, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 2017-02-16 14: 06: 14.352214 Регистрация [24422: 1035557] Подсистема: com.apple.UIKit, категория: GestureExclusion, enable_level: 0, pe rsist_level: 0, default_ttl: 1, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 1, privacy_setting: 2, enable_private_data: 0 2017-02-16 14: 06: 14.943772 Регистрация [24422: 1035557] подсистема: com.apple.BackBoardServices.fence, категория: Observer, enable_level: 1, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0 2017- 02-16 14: 06: 14.944254 Регистрация [24422: 1035557] подсистема: com.apple.BackBoardServices.fence, категория: Рабочая область, enable_level: 1, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0 2017-02-16 14: 06: 14.944580 Регистрация [24422: 1035557] подсистема: com.apple.BackBoardServices.fence, category: Trace, enable_level: 1, persist_level: 0, default_ttl: 0, info_ttl: 0, debug_ttl: 0, generate_symptoms: 0, enable_oversize: 0, privacy_setting: 0, enable_private_data: 0 2017-02-16 14:06 : 32.331 Регистрация [24422: 1035557] * Завершение действия приложения из-за неотображенного исключения «NSInvalidArgumentException», причина: «Приложение попыталось представить ноль модального контроллера представления на цель». * Первый стек бросить вызов: ( 0 CoreFoundation 0x00000001107ad34b exceptionPreprocess + 171 1 libobjc.A.dylib 0x000000010fdf121e objc_exception_throw + 48 2 UIKit 0x0000000111a4b867 - [UIViewController _presentViewController: withAnimationController: завершение:] + 5328 3 UIKit 0x0000000111a4e3da __62 - [UIViewController presentViewController: анимированные: завершение:] _ block_invoke_2 + 70 4 UIKit 0x000000011194fada + [UIView (анимация) performWithoutAnimation:] + 90 5 UIKit 0x0000000111a4e370 __62- [UIViewController presentViewController: анимированные: завершение:] _ block_invoke + 365 6 UIKit 0x0000000111a4e6df - [ UIViewController _performCoordinatedPresentOrDismiss: анимированные:] + 530 7 UIKit 0x0000000111a4e1c5 - [UIViewController presentViewController: анимированные: завершение:] + 179 8 Регистрация 0x000000010f7f13da _TFC12Registration14ViewController17sendSMSBtnClickedfPs9AnyObject_T_ + +1002 9 Регистрация 0x000000010f7f1516 _TToFC12Registration14ViewController17sendSMSBtnClickedfPs9AnyObject_T_ + 54 10 UIKit 0x0000000111898b88 - [UIApplication sendAction: чтобы: от : forEvent:] + 83 11 UIKit 0x0000000111a1e2b2 - [UIControl sendAction: до: forEvent:] + 67 12 UIKit 0x0000000111a1e5cb - [UIControl _sendActionsForEvents: withEvent:] + 444 13 UIKit 0x0000000111a1d4c7 - [UIControl touchesEnded: withEvent:] + 668 14 UIKit 0x00000001119060d5 - [UIWindow _sendTouchesForEvent:] + 2747 15 UIKit 0x00000001119077c3 - [UIWindow SendEvent:] + 4011 16 UIKit 0x00000001118b4a33 - [UIApplication SendEvent:] + 371 17 UIKit 0x00000001120a6b6d __dispatchPreprocessedEventFromEventQueue + 3248 18 UIKit 0x000000011209f817 __handleEventQueue + 4879 19 CoreFoundation 0x0000000110752311 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION + 17 20 CoreFoundation 0x000000011073759c __CFRunLoopDoSources0 + 556 21 CoreFoundation 0x0000000110736a86 __CFRunLoopRun + 918 22 CoreFoundation 0x0000000110736494 CFRunLoopRunSpecific + 420 23 GraphicsService с 0x0000000115a13a6f GSEventRunModal + 161 24 UIKit 0x0000000111896f34 UIApplicationMain + 159 25 Регистрация 0x000000010f7f911f основной + 111 26 libdyld.dylib 0x000000011428f68d старт + 1 ) LibC++ abi.dylib: завершение с неперехваченного исключением типа NSException

Помогите решить эту проблему. Есть идеи?

Возможно, эта проблема, потому что я запускаю скрипт на симуляторе, а не на устройстве?

Заранее благодарен!

+2

Мое первое предложение было бы проверить, работает ли оно на устройстве. Ошибка заключается в следующем: приложение попыталось представить объектный контроллер вида nil.Кажется, что messageVC является нулевым или не представляется. Возможно из-за симулятора? – Darkwonder

+0

Спасибо. Я пытаюсь сделать это –

ответ

1

Вы можете использовать этот код. Он проверен и работает хорошо

@IBAction func sendMessage(_ sender: UIButton) {
  
     if (MFMessageComposeViewController.canSendText()) { 
      let messageVC = MFMessageComposeViewController() 
      messageVC.body = "For a good time call!" 
      messageVC.recipients = ["79161887060"] 
      messageVC.messageComposeDelegate = self 
      self.presentViewController(messageVC, animated: true, completion: nil) 
     } 
    } 
+1

Это работает, я использую его таким же образом. Естественно, он не будет работать на Simulator, потому что canSendText является ложным. Но, по крайней мере, не произойдет сбой, если на устройстве нет SMS-сообщений. –

Смежные вопросы