지정한 식사시간을 알려주고 식사후 약먹어야 할 시간을 알려주는 프로그램짜기

2023. 3. 8. 12:07인간이 묻고 인공지능이 답하다

본 포스트는 인공지능 Chat GPT를 통해 제작되었으며, 파이션과 xcode로 프로그램을 짜고 앱을 만들도록 코드를 구성하도록 했습니다. 

당뇨나 고지혈환자들에게 규칙적인 식사는 매우중요합니다. 그래서 지정한 시간에 식사하고 약을 먹을 수 있도록 프로그램을 구성할 수 있도록 인공지능에게 프로그램을 짜도록 했습니다. 조건은 아래와 같으며, 파이션으로 프로그램을 찌서 구성한후 앱을 만들기 위해 다시 코드를 변환해 달라고 요청했습니다. 구동여부는 확인해 보아야 하겠지만 프로그램은 정상적으로 짜는 것 같습니다. 

조건
식사시간을 알려주고 식사후 약을 복용하는 코드를 짜줘

- 식사는 7시, 12시, 19시이고
- 약복용은 식사후 30분 후 이며
- 알림은 메일로 보내어줘
- 메일주소는 pastor@leedonghyun.com
- 제작한 코드를  xcode로 만들어죠


1. 파이션으로 프로그램을 만듭니다.

아래는 Python을 사용하여 식사시간을 알려주고 식사 후 30분 후에 약을 복용하도록 하며, 알림은 메일로 보내는 코드입니다.

python
Copy code
import smtplib
import time

# 식사 시간
meal_times = ["7시", "12시", "19시"]

# 이메일 정보
sender_email = "보내는_이메일@도메인.com"
sender_password = "보내는_이메일_비밀번호"
receiver_email = "pastor@leedonghyun.com"
subject = "알림 메일"

# 식사시간 및 약 복용 함수
def meal_and_medicine_time(meal_time):
    print(f"{meal_time}에 식사를 하셨습니다. 30분 후 약을 복용하세요.")
    time.sleep(30 * 60)
    print("약 복용 시간입니다!")

    # 이메일 전송
    with smtplib.SMTP("smtp.gmail.com", 587) as smtp:
        smtp.starttls()
        smtp.login(sender_email, sender_password)

        message = f"Subject: {subject}\n\n{meal_time} 식사 후 약 복용 시간입니다!"
        smtp.sendmail(sender_email, receiver_email, message)

    print("알림 메일을 보냈습니다.")

# 각 식사시간마다 함수 실행
for meal_time in meal_times:
    meal_and_medicine_time(meal_time)
위 코드에서 meal_times 변수에는 식사 시간을 리스트로 입력합니다. 이 예시에서는 "7시", "12시", "19시"를 입력하였습니다.

meal_and_medicine_time() 함수는 식사시간을 인자로 받아서, 식사 후 30분 대기 후 약 복용을 알리는 문구를 출력하고, 알림 메일을 보내는 함수입니다.

with smtplib.SMTP("smtp.gmail.com", 587) as smtp:을 사용하여 Gmail SMTP 서버에 로그인합니다. message 변수에 이메일 제목과 내용을 입력합니다. smtp.sendmail(sender_email, receiver_email, message)을 사용하여 메일을 보냅니다. print("알림 메일을 보냈습니다.")는 메일이 성공적으로 전송되면 출력됩니다.

for 루프를 사용하여 각 식사시간마다 meal_and_medicine_time() 함수를 실행합니다.

이 코드를 원하는 프로그램에 추가하여 사용하시면 됩니다.



아래는 Python을 사용하여 식사시간을 알려주고 식사 후 30분 후에 약을 복용하도록 하며, 알림은 메일로 보내는 코드입니다.


python
Copy code
import smtplib
import time

# 식사 시간
meal_times = ["7시", "12시", "19시"]

# 이메일 정보
sender_email = "보내는_이메일@도메인.com"
sender_password = "보내는_이메일_비밀번호"
receiver_email = "pastor@leedonghyun.com"
subject = "알림 메일"

# 식사시간 및 약 복용 함수
def meal_and_medicine_time(meal_time):
    print(f"{meal_time}에 식사를 하셨습니다. 30분 후 약을 복용하세요.")
    time.sleep(30 * 60)
    print("약 복용 시간입니다!")

    # 이메일 전송
    with smtplib.SMTP("smtp.gmail.com", 587) as smtp:
        smtp.starttls()
        smtp.login(sender_email, sender_password)

        message = f"Subject: {subject}\n\n{meal_time} 식사 후 약 복용 시간입니다!"
        smtp.sendmail(sender_email, receiver_email, message)

    print("알림 메일을 보냈습니다.")

# 각 식사시간마다 함수 실행
for meal_time in meal_times:
    meal_and_medicine_time(meal_time)
위 코드에서 meal_times 변수에는 식사 시간을 리스트로 입력합니다. 이 예시에서는 "7시", "12시", "19시"를 입력하였습니다.


meal_and_medicine_time() 함수는 식사시간을 인자로 받아서, 식사 후 30분 대기 후 약 복용을 알리는 문구를 출력하고, 알림 메일을 보내는 함수입니다.


with smtplib.SMTP("smtp.gmail.com", 587) as smtp:을 사용하여 Gmail SMTP 서버에 로그인합니다. message 변수에 이메일 제목과 내용을 입력합니다. smtp.sendmail(sender_email, receiver_email, message)을 사용하여 메일을 보냅니다. print("알림 메일을 보냈습니다.")는 메일이 성공적으로 전송되면 출력됩니다.


for 루프를 사용하여 각 식사시간마다 meal_and_medicine_time() 함수를 실행합니다.


이 코드를 원하는 프로그램에 추가하여 사용하시면 됩니다.

 

2. 구글플레이 스토어 등록할 수 있는 xcode로 변환하기

아래는 Swift 언어를 사용하여 Xcode에서 구현한 코드입니다.

swift
Copy code
import UIKit
import UserNotifications

class ViewController: UIViewController {
    
    let notificationCenter = UNUserNotificationCenter.current()
    let pastorEmail = "pastor@leedonghyun.com"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 7시, 12시, 19시에 알림 등록
        registerNotification(hour: 7)
        registerNotification(hour: 12)
        registerNotification(hour: 19)
    }
    
    // 알림 등록 함수
    func registerNotification(hour: Int) {
        let content = UNMutableNotificationContent()
        content.title = "식사 알림"
        content.body = "\(hour)시에 식사를 하셨나요?"
        content.sound = .default
        
        // 약 복용 알림 추가
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 30*60, repeats: false)
        let request = UNNotificationRequest(identifier: "mealReminder", content: content, trigger: trigger)
        
        // 알림 등록
        notificationCenter.add(request) { (error) in
            if let error = error {
                print("알림 등록 실패: \(error.localizedDescription)")
            } else {
                print("알림이 \(hour)시에 등록되었습니다.")
            }
        }
    }
    
    // 알림 동의 여부 확인 함수
    func checkAuthorizationStatus() {
        notificationCenter.getNotificationSettings { (settings) in
            switch settings.authorizationStatus {
            case .authorized:
                print("알림 권한이 있습니다.")
            case .denied:
                print("알림 권한이 없습니다.")
            default:
                self.notificationCenter.requestAuthorization(options: [.alert, .sound]) { (granted, error) in
                    if let error = error {
                        print("알림 권한 요청 실패: \(error.localizedDescription)")
                    } else if granted {
                        print("알림 권한이 허용되었습니다.")
                    } else {
                        print("알림 권한이 거부되었습니다.")
                    }
                }
            }
        }
    }
    
    // 이메일 보내는 함수
    func sendEmail(to email: String, subject: String, body: String) {
        if let url = URL(string: "mailto:\(email)?subject=\(subject)&body=\(body)") {
            UIApplication.shared.open(url)
        }
    }
    
    // 식사 후 약 복용 함수
    @IBAction func takeMedicine(_ sender: UIButton) {
        let content = UNMutableNotificationContent()
        content.title = "약 복용 알림"
        content.body = "약을 복용하셨나요?"
        content.sound = .default
        
        // 이메일 발송 추가
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 30*60, repeats: false)
        let request = UNNotificationRequest(identifier: "medicineReminder", content: content, trigger: trigger)
        
        // 알림 등록
        notificationCenter.add(request) { (error) in
            if let error = error {
                print("알림 등록 실패: \(error.localizedDescription)")
            } else {
                self.sendEmail(to: self.pastorEmail, subject: "약

번역결과



아래는 Swift 언어를 사용하여 Xcode에서 구현한 코드입니다.



swift
Copy code
import UIKit
import UserNotifications

class ViewController: UIViewController {
    
    let notificationCenter = UNUserNotificationCenter.current()
    let pastorEmail = "pastor@leedonghyun.com"
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 7시, 12시, 19시에 알림 등록
        registerNotification(hour: 7)
        registerNotification(hour: 12)
        registerNotification(hour: 19)
    }
    
    // 알림 등록 함수
    func registerNotification(hour: Int) {
        let content = UNMutableNotificationContent()
        content.title = "식사 알림"
        content.body = "\(hour)시에 식사를 하셨나요?"
        content.sound = .default
        
        // 약 복용 알림 추가
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 30*60, repeats: false)
        let request = UNNotificationRequest(identifier: "mealReminder", content: content, trigger: trigger)
        
        // 알림 등록
        notificationCenter.add(request) { (error) in
            if let error = error {
                print("알림 등록 실패: \(error.localizedDescription)")
            } else {
                print("알림이 \(hour)시에 등록되었습니다.")
            }
        }
    }
    
    // 알림 동의 여부 확인 함수
    func checkAuthorizationStatus() {
        notificationCenter.getNotificationSettings { (settings) in
            switch settings.authorizationStatus {
            case .authorized:
                print("알림 권한이 있습니다.")
            case .denied:
                print("알림 권한이 없습니다.")
            default:
                self.notificationCenter.requestAuthorization(options: [.alert, .sound]) { (granted, error) in
                    if let error = error {
                        print("알림 권한 요청 실패: \(error.localizedDescription)")
                    } else if granted {
                        print("알림 권한이 허용되었습니다.")
                    } else {
                        print("알림 권한이 거부되었습니다.")
                    }
                }
            }
        }
    }
    
    // 이메일 보내는 함수
    func sendEmail(to email: String, subject: String, body: String) {
        if let url = URL(string: "mailto:\(email)?subject=\(subject)&body=\(body)") {
            UIApplication.shared.open(url)
        }
    }
    
    // 식사 후 약 복용 함수
    @IBAction func takeMedicine(_ sender: UIButton) {
        let content = UNMutableNotificationContent()
        content.title = "약 복용 알림"
        content.body = "약을 복용하셨나요?"
        content.sound = .default
        
        // 이메일 발송 추가
        let trigger = UNTimeIntervalNotificationTrigger(timeInterval: 30*60, repeats: false)
        let request = UNNotificationRequest(identifier: "medicineReminder", content: content, trigger: trigger)
        
        // 알림 등록
        notificationCenter.add(request) { (error) in
            if let error = error {
                print("알림 등록 실패: \(error.localizedDescription)")
            } else {
                self.sendEmail(to: self.pastorEmail, subject: "약


swift
Copy code
import UIKit
import UserNotifications

class ViewController: UIViewController {

    let center = UNUserNotificationCenter.current()

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

    func scheduleNotification() {
        let content = UNMutableNotificationContent()
        content.title = "알림"
        content.body = "약 복용 시간이에요!"
        content.sound = UNNotificationSound.default

        let trigger1 = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: 7, minute: 30), repeats: true)
        let trigger2 = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: 12, minute: 30), repeats: true)
        let trigger3 = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: 19, minute: 30), repeats: true)

        let request1 = UNNotificationRequest(identifier: "morning", content: content, trigger: trigger1)
        let request2 = UNNotificationRequest(identifier: "noon", content: content, trigger: trigger2)
        let request3 = UNNotificationRequest(identifier: "evening", content: content, trigger: trigger3)

        center.add(request1) { (error) in
            if let error = error {
                print("오류 발생: \(error.localizedDescription)")
            }
        }
        center.add(request2) { (error) in
            if let error = error {
                print("오류 발생: \(error.localizedDescription)")
            }
        }
        center.add(request3) { (error) in
            if let error = error {
                print("오류 발생: \(error.localizedDescription)")
            }
        }
    }
}


이 코드는 알림 센터를 이용하여 사용자에게 약 복용 시간을 알려주는 기능을 구현한 코드입니다. scheduleNotification 함수에서 UNNotificationTrigger 객체를 생성하여 UNNotificationRequest 객체를 만들고, 알림 센터에 추가하여 알림을 등록합니다. 이 때, DateComponents를 이용하여 알림을 발생시킬 시간을 설정할 수 있습니다.

이 코드를 Xcode에서 실행하면, 해당 시간에 맞춰서 알림이 표시되며, 알림을 클릭하면 앱으로 이동할 수 있습니다. 또한, 메일로 알림을 보내는 기능을 추가하고 싶다면 UNNotificationContent 객체에서 userInfo 속성을 이용하여 사용자 정보를 저장하고, 메일로 보내는 함수를 추가해야 합니다.

import UIKit
import UserNotifications

class ViewController: UIViewController {

    let center = UNUserNotificationCenter.current()

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

    func scheduleNotification() {
        let content = UNMutableNotificationContent()
        content.title = "알림"
        content.body = "약 복용 시간이에요!"
        content.sound = UNNotificationSound.default

        let trigger1 = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: 7, minute: 30), repeats: true)
        let trigger2 = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: 12, minute: 30), repeats: true)
        let trigger3 = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: 19, minute: 30), repeats: true)

        let request1 = UNNotificationRequest(identifier: "morning", content: content, trigger: trigger1)
        let request2 = UNNotificationRequest(identifier: "noon", content: content, trigger: trigger2)
        let request3 = UNNotificationRequest(identifier: "evening", content: content, trigger: trigger3)

        center.add(request1) { (error) in
            if let error = error {
                print("오류 발생: \(error.localizedDescription)")
            }
        }
        center.add(request2) { (error) in
            if let error = error {
                print("오류 발생: \(error.localizedDescription)")
            }
        }
        center.add(request3) { (error) in
            if let error = error {
                print("오류 발생: \(error.localizedDescription)")
            }
        }
    }
}
 

이 코드는 알림 센터를 이용하여 사용자에게 약 복용 시간을 알려주는 기능을 구현한 코드입니다. scheduleNotification 함수에서 UNNotificationTrigger 객체를 생성하여 UNNotificationRequest 객체를 만들고, 알림 센터에 추가하여 알림을 등록합니다. 이 때, DateComponents를 이용하여 알림을 발생시킬 시간을 설정할 수 있습니다.

이 코드를 Xcode에서 실행하면, 해당 시간에 맞춰서 알림이 표시되며, 알림을 클릭하면 앱으로 이동할 수 있습니다. 또한, 메일로 알림을 보내는 기능을 추가하고 싶다면 UNNotificationContent 객체에서 userInfo 속성을 이용하여 사용자 정보를 저장하고, 메일로 보내는 함수를 추가해야 합니다.

 



swift
Copy code
import UIKit
import UserNotifications

class ViewController: UIViewController {

    let center = UNUserNotificationCenter.current()

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

    func scheduleNotification() {
        let content = UNMutableNotificationContent()
        content.title = "알림"
        content.body = "약 복용 시간이에요!"
        content.sound = UNNotificationSound.default

        let trigger1 = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: 7, minute: 30), repeats: true)
        let trigger2 = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: 12, minute: 30), repeats: true)
        let trigger3 = UNCalendarNotificationTrigger(dateMatching: DateComponents(hour: 19, minute: 30), repeats: true)

        let request1 = UNNotificationRequest(identifier: "morning", content: content, trigger: trigger1)
        let request2 = UNNotificationRequest(identifier: "noon", content: content, trigger: trigger2)
        let request3 = UNNotificationRequest(identifier: "evening", content: content, trigger: trigger3)

        center.add(request1) { (error) in
            if let error = error {
                print("오류 발생: \(error.localizedDescription)")
            }
        }
        center.add(request2) { (error) in
            if let error = error {
                print("오류 발생: \(error.localizedDescription)")
            }
        }
        center.add(request3) { (error) in
            if let error = error {
                print("오류 발생: \(error.localizedDescription)")
            }
        }
    }
}


이 코드는 알림 센터를 이용하여 사용자에게 약 복용 시간을 알려주는 기능을 구현한 코드입니다. scheduleNotification 함수에서 UNNotificationTrigger 객체를 생성하여 UNNotificationRequest 객체를 만들고, 알림 센터에 추가하여 알림을 등록합니다. 이 때, DateComponents를 이용하여 알림을 발생시킬 시간을 설정할 수 있습니다.

이 코드를 Xcode에서 실행하면, 해당 시간에 맞춰서 알림이 표시되며, 알림을 클릭하면 앱으로 이동할 수 있습니다. 또한, 메일로 알림을 보내는 기능을 추가하고 싶다면 UNNotificationContent 객체에서 userInfo 속성을 이용하여 사용자 정보를 저장하고, 메일로 보내는 함수를 추가해야 합니다.