날씨

상태
Done
담당자
날짜
WeatherAPIService.swift
1.9KB
AntiSleep.zip
418.4KB
import WatchKit import Foundation import HealthKit import CoreLocation class InterfaceController: WKInterfaceController { var sleepCount : Int = 0 @IBOutlet weak var driveBtn: WKInterfaceButton! @IBOutlet weak var stopDrivingBtn: WKInterfaceButton! @IBOutlet weak var finishDriveBtn: WKInterfaceButton! @IBOutlet weak var countTextLabel: WKInterfaceLabel! var locationManager = CLLocationManager() override func awake(withContext context: Any?) { // Configure interface objects here. locationManager.delegate = self } override func willActivate() { // This method is called when watch view controller is about to be visible to user } override func didDeactivate() { // This method is called when watch view controller is no longer visible } @IBAction func dBtnTapped() { self.pushController(withName: "drive", context: nil) } @IBAction func sdBtnTapped() { //driveBtn.setTitle("Driving") self.pushController(withName: "finishDrive", context: nil) } @IBAction func fdTapped() { //driveBtn.setTitle("Driving") self.pushController(withName: "startDrive", context: nil) } func setLabel() { self.countTextLabel.setText("졸음 운전 횟수 : \(sleepCount)") } var healthStore: HKHealthStore? func checkLocationAuth() { // 3.1 guard CLLocationManager.locationServicesEnabled() else { // 시스템 설정으로 유도하는 커스텀 얼럿 //locationAlert() print("locationAlert") return } // 3.2 let authorizationStatus: CLAuthorizationStatus // 앱의 권한 상태 가져오는 코드 (iOS 버전에 따라 분기처리) if #available(iOS 14.0, *) { authorizationStatus = locationManager.authorizationStatus }else { authorizationStatus = CLLocationManager.authorizationStatus() } // 권한 상태값에 따라 분기처리를 수행하는 메서드 실행 userCurrentLocationAuth(authorizationStatus) } func userCurrentLocationAuth(_ status: CLAuthorizationStatus) { switch status { case .notDetermined: // 사용자가 권한에 대한 설정을 선택하지 않은 상태 // 권한 요청을 보내기 전에 desiredAccuracy 설정 필요 locationManager.desiredAccuracy = kCLLocationAccuracyBest // 권한 요청 locationManager.requestWhenInUseAuthorization() case .denied, .restricted: // 권한이 없는 상태 //locationAlert() print("locationAlert") case .authorizedWhenInUse: // 앱을 사용중일 때, 위치 서비스를 이용할 수 있는 상태: 위치 가져오기 locationManager.startUpdatingLocation() default: print("Default") } } // func locationAlert() { // let locationServiceAlert = UIAlertController(title: "위치 정보 이용", message: "위치 서비스를 사용할 수 없습니다.\n디바이스의 '설정 > 개인정보 보호'에서 위치 서비스를 켜주세요.", preferredStyle: .alert) // let goSetting = UIAlertAction(title: "설정으로 이동", style: .destructive) { _ in // if let appSetting = URL(string: UIApplication.openSettingsURLString) { // UIApplication.shared.open(appSetting) // } // } // let cancel = UIAlertAction(title: "취소", style: .default) { [weak self] _ in // //async { await self?.reloadData() } // } // locationServiceAlert.addAction(cancel) // locationServiceAlert.addAction(goSetting) // // present(locationServiceAlert, animated: true) // } } extension InterfaceController:CLLocationManagerDelegate { // 사용자의 위치를 성공적으로 가져왔을 때 호출 func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { if let coordinate = locations.last?.coordinate { WeatherAPIService.weatherAPIService.getData(coordinate) } // startUpdatingLocation()을 사용하여 사용자 위치를 가져왔다면 // 불필요한 업데이트를 방지하기 위해 stopUpdatingLocation을 호출 locationManager.stopUpdatingLocation() } // 위치 정보를 가져오지 못했을 때 호출 func locationManager(_ manager: CLLocationManager, didFailWithError error: Error) { print(error) } // 앱에 대한 권한 설정이 변경되면 호출 func locationManagerDidChangeAuthorization(_ manager: CLLocationManager) { //위치 서비스가 활성화 상태인지 확인 checkLocationAuth() } // 앱에 대한 권한 설정이 변경되면 호출 (iOS 14 미만) func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { // 위치 서비스가 활성화 상태인지 확인 checkLocationAuth() } }
JavaScript
복사
WeatherViewController.swift
5.7KB
WeatherStructs.swift
1.4KB
WeatherImage.zip
22.0KB
target 'AntiSleep' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for AntiSleep end target 'AntiSleep WatchKit App' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for AntiSleep WatchKit App end target 'AntiSleep WatchKit Extension' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for AntiSleep WatchKit Extension pod 'Alamofire' pod 'AlamofireImage', '~> 4.1' end
JavaScript
복사
날씨 파일: 스마트폰 어플
WeatherViewController.swift
6.1KB