Как отправить результаты JSON по электронной почте, когда кнопка нажата в Swift 4? - PullRequest
0 голосов
/ 03 мая 2019

Я подхожу к проблеме, когда у меня есть список вопросов json, где, когда пользователь заполняет общие вопросы, я показываю кнопку для отправки, и все, что я хочу сделать, - это сделать эту кнопку отправки, чтобы отправить мне json результаты на мою электронную почту. это возможно с моим кодом? Спасибо огромное! Кстати, я использую SurveyNative для создания опросов.

import UIKit
import SurveyNative

class MyViewController: SurveyViewController, SurveyAnswerDelegate, CustomConditionDelegate, ValidationFailedDelegate {



   override func viewDidLoad() {
      super.viewDidLoad()
      self.setSurveyAnswerDelegate(self)
      self.setCustomConditionDelegate(self)
      self.setValidationFailedDelegate(self)

    }


  override func surveyJsonFile() -> String {
      return "GeneralQuestions"
   }

   override func surveyTitle() -> String {
      return "General Questions"
   }




   func question(for id: String, answer: Any) {
      print("Question: \(id) has answer (maybe is complete): \(answer)")
      if (surveyQuestions!.isQuestionFullyAnswered(id)) {
          print("Question: \(id) is complete")
      }
   }

   func isConditionMet(answers: [String: Any], extra: [String: Any]?) -> Bool {
      let id = extra!["id"] as! String
      if id == "check_age" {
         if let birthYearStr = answers["birthyear"] as? String, let ageStr = answers["age"] as? String {
            let birthYear = Int(birthYearStr)
            let age = Int(ageStr)
            let wiggleRoom = extra!["wiggle_room"] as? Int
            let date = Date()
            let calendar = Calendar.current
            let components = calendar.dateComponents([.year], from: date)
            let currentYear =  components.year
            return abs(birthYear! + age! - currentYear!) > wiggleRoom!
         } else {
            return false
         }
      } else {
         Logger.log("Unknown custom condition check: \(id)")
         return false
      }
   }

   func validationFailed(message: String) {
      let alert = UIAlertController(title: nil, message: message, preferredStyle: UIAlertController.Style.alert)
      alert.addAction(UIAlertAction(title: "OK", style: UIAlertAction.Style.default, handler: nil))
      self.present(alert, animated: true, completion: nil)
   }






}

Мой Json:

{
        "questions": [
            {
                "id": "ice_cream",
                "header": "Question 1",
                "question": "Did you enjoy the discussion topic?",
                "question_type": "single_select",
                "options": [
                    "YES",
                    "NO",
                    "I DONT KNOW",

                    {
                        "title": "Other",
                        "type": "freeform"
                    }
                ]
            },
            {
                "id": "perfect_day",
                "header": "Question 2",
                "question": "Did you enjoy the presenter? If yes, why?",
                "question_type": "single_select",
                "options": [
                    "YES",
                    "NO",
                    "I DONT KNOW",

                    {
                        "title": "Other",
                        "type": "freeform"
                    }
                ]
            },



            {
                "id": "ice_cream",
                "header": "Question 3",
                "question": "Did you feel you engaged or connected to the topic discussed?",
                "question_type": "single_select",
                "options": [
                    "YES",
                    "NO",

                    {
                        "title": "Other",
                        "type": "freeform"
                    }
                ]
            },

            {
                "id": "perfect_day",
                "header": "Question 4",
                "question": "Do you have any topics you would like to discuss?",
                "question_type": "single_select",
                "options": [
                    "YES",
                    "NO",
                    "I DONT KNOW",
                ]
            },


            {
                "id": "felt_like_adult",
                "header": "Question 5",
                "question": "Do you feel we can change anything?",
                "question_type": "single_select",
                "options": [
                    "YES",
                    "NO",
                    "I DONT KNOW",

                ]
            },



            {
                "id": "pets",
                "header": "Question 6",
                "question": "Do you prefer a specific presenter? If yes, why?",
                "question_type": "single_select",
                "options": [
                    "YES",
                    "NO",
                    "I DONT KNOW",

                   {
                        "title": "Other",
                        "type": "freeform"
                    }

                ]

            },
        ],
        "submit": {
            "button_title": "Submit Answers",
            "url": "https://www.example.com"
        },
        "auto_focus_text": true
    }

1 Ответ

1 голос
/ 03 мая 2019

Могу ли я узнать, какова цель получения результатов JSON в электронной почте?Вот несколько вариантов отправки электронной почты, указанных ниже.

Вариант 1

Вы можете использовать MFMailComposeViewController для отправки электронной почты из вашего приложения.Установите свой JSON в тело сообщения.Вот ссылка о том, как отправить электронное письмо с помощью MFMailComposeViewController.

Вариант 2

Используйте службу API для отправки сообщений электронной почты обратно на вашу электронную почту.Например: Gmail API.Вы можете посмотреть здесь

Вариант 3

Создать свой собственный API, чтобы публиковать результаты JSON на ваш сервер и получать ваше сообщение, используя свой собственный почтовый сервер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...