├── .gitignore ├── Aireport.sketch ├── Images ├── Icon.jpg ├── Main.jpg ├── Title.jpg ├── Widget.jpg └── CitySearch.jpg ├── Aireport ├── Assets.xcassets │ ├── Contents.json │ ├── AppIcon.appiconset │ │ ├── Icon.png │ │ ├── Icon-40.png │ │ ├── Icon-72.png │ │ ├── Icon-76.png │ │ ├── Icon@2x.png │ │ ├── Icon-40@2x.png │ │ ├── Icon-40@3x.png │ │ ├── Icon-60@2x.png │ │ ├── Icon-60@3x.png │ │ ├── Icon-72@2x.png │ │ ├── Icon-76@2x.png │ │ ├── Icon-Small.png │ │ ├── Icon-83.5@2x.png │ │ ├── Icon-Small-50.png │ │ ├── Icon-Small@2x.png │ │ ├── Icon-Small@3x.png │ │ ├── ios-marketing.png │ │ ├── Icon-Small-50@2x.png │ │ ├── NotificationIcon@2x.png │ │ ├── NotificationIcon@3x.png │ │ ├── NotificationIcon~ipad.png │ │ ├── NotificationIcon~ipad@2x.png │ │ └── Contents.json │ ├── airLogo.imageset │ │ ├── air@2x.png │ │ ├── air@3x.png │ │ └── Contents.json │ ├── location.imageset │ │ ├── location@2x.png │ │ ├── location@3x.png │ │ └── Contents.json │ ├── Good.colorset │ │ └── Contents.json │ ├── Hazardous.colorset │ │ └── Contents.json │ ├── Moderate.colorset │ │ └── Contents.json │ ├── Sensitive .colorset │ │ └── Contents.json │ ├── Unhealthy.colorset │ │ └── Contents.json │ └── VeryUnhealthy.colorset │ │ └── Contents.json ├── Aireport.entitlements ├── AppDelegate.swift ├── VC │ ├── ViewController.swift │ ├── SearchVC.swift │ └── Base.lproj │ │ └── Main.storyboard ├── Info.plist └── Base.lproj │ └── LaunchScreen.storyboard ├── AireportWC ├── Assets.xcassets │ ├── Contents.json │ └── AppIcon.appiconset │ │ ├── Icon38mm@2x.png │ │ ├── Icon40mm@2x.png │ │ ├── Icon42mm@2x.png │ │ ├── Icon44mm@2x.png │ │ ├── IconLauncher@2x.png │ │ ├── IconSettings@2x.png │ │ ├── IconSettings@3x.png │ │ ├── watch-marketing.png │ │ ├── IconQuickLook38mm@2x.png │ │ ├── IconQuickLook42mm@2x.png │ │ ├── IconQuickLook44mm@2x.png │ │ └── Contents.json ├── Info.plist └── Base.lproj │ └── Interface.storyboard ├── AireportWC Extension ├── Assets.xcassets │ ├── Contents.json │ └── Complication.complicationset │ │ ├── Circular.imageset │ │ ├── 画板 2.png │ │ ├── 画板.png │ │ ├── 画板 2-1.png │ │ ├── 画板 2-3.png │ │ └── Contents.json │ │ ├── Modular.imageset │ │ ├── 画板 2.png │ │ ├── 画板 2-1.png │ │ ├── 画板 2-2.png │ │ ├── 画板 2-3.png │ │ └── Contents.json │ │ ├── Extra Large.imageset │ │ ├── 画板 2-1.png │ │ ├── 画板 2-2.png │ │ ├── 画板 2-3.png │ │ ├── 画板 2.png │ │ └── Contents.json │ │ ├── Graphic Bezel.imageset │ │ ├── 画板 2.png │ │ ├── 画板 2-1.png │ │ ├── 画板 2-2.png │ │ └── Contents.json │ │ ├── Utilitarian.imageset │ │ ├── 画板 2-1.png │ │ ├── 画板 2-2.png │ │ ├── 画板 2-3.png │ │ ├── 画板 2.png │ │ └── Contents.json │ │ ├── Graphic Corner.imageset │ │ ├── 画板 2.png │ │ ├── 画板 2-1.png │ │ ├── 画板 2-2.png │ │ └── Contents.json │ │ ├── Graphic Circular.imageset │ │ ├── 画板 2-1.png │ │ ├── 画板 2-2.png │ │ ├── 画板 2.png │ │ └── Contents.json │ │ ├── Graphic Large Rectangular.imageset │ │ └── Contents.json │ │ └── Contents.json ├── PushNotificationPayload.apns ├── NotificationController.swift ├── InterfaceController.swift ├── Info.plist ├── ExtensionDelegate.swift └── ComplicationController.swift ├── Aireport.xcodeproj ├── project.xcworkspace │ ├── contents.xcworkspacedata │ ├── xcuserdata │ │ └── wenba.xcuserdatad │ │ │ ├── UserInterfaceState.xcuserstate │ │ │ └── WorkspaceSettings.xcsettings │ └── xcshareddata │ │ ├── IDEWorkspaceChecks.plist │ │ └── WorkspaceSettings.xcsettings ├── xcuserdata │ ├── wenba.xcuserdatad │ │ ├── xcdebugger │ │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ │ ├── xcschememanagement.plist │ │ │ └── Aireport.xcscheme │ └── jihongbo.xcuserdatad │ │ ├── xcdebugger │ │ └── Breakpoints_v2.xcbkptlist │ │ └── xcschemes │ │ ├── xcschememanagement.plist │ │ ├── Aireport.xcscheme │ │ └── AireportWidget.xcscheme └── project.pbxproj ├── AireportWidget ├── AireportWidget.entitlements ├── Info.plist ├── TodayViewController.swift └── Base.lproj │ └── MainInterface.storyboard ├── AireportKit ├── Model │ ├── PlaceModel.swift │ └── AirModel.swift ├── AireportKit.h ├── Info.plist └── API │ ├── AirNotifiCation.swift │ ├── AirTools.swift │ └── AirAPI.swift ├── AireportWCKit ├── AireportWCKit.h └── Info.plist └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | *.xcuserstate 2 | -------------------------------------------------------------------------------- /Aireport.sketch: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport.sketch -------------------------------------------------------------------------------- /Images/Icon.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Images/Icon.jpg -------------------------------------------------------------------------------- /Images/Main.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Images/Main.jpg -------------------------------------------------------------------------------- /Images/Title.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Images/Title.jpg -------------------------------------------------------------------------------- /Images/Widget.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Images/Widget.jpg -------------------------------------------------------------------------------- /Images/CitySearch.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Images/CitySearch.jpg -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | } 6 | } -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/airLogo.imageset/air@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/airLogo.imageset/air@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/airLogo.imageset/air@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/airLogo.imageset/air@3x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-40.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-40.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-72.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-72.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-76.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-76.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-Small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-Small.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/location.imageset/location@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/location.imageset/location@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/location.imageset/location@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/location.imageset/location@3x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/ios-marketing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/ios-marketing.png -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/Icon38mm@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC/Assets.xcassets/AppIcon.appiconset/Icon38mm@2x.png -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/Icon40mm@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC/Assets.xcassets/AppIcon.appiconset/Icon40mm@2x.png -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/Icon42mm@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC/Assets.xcassets/AppIcon.appiconset/Icon42mm@2x.png -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/Icon44mm@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC/Assets.xcassets/AppIcon.appiconset/Icon44mm@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/IconLauncher@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC/Assets.xcassets/AppIcon.appiconset/IconLauncher@2x.png -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/IconSettings@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC/Assets.xcassets/AppIcon.appiconset/IconSettings@2x.png -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/IconSettings@3x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC/Assets.xcassets/AppIcon.appiconset/IconSettings@3x.png -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/watch-marketing.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC/Assets.xcassets/AppIcon.appiconset/watch-marketing.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/IconQuickLook38mm@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC/Assets.xcassets/AppIcon.appiconset/IconQuickLook38mm@2x.png -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/IconQuickLook42mm@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC/Assets.xcassets/AppIcon.appiconset/IconQuickLook42mm@2x.png -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/IconQuickLook44mm@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC/Assets.xcassets/AppIcon.appiconset/IconQuickLook44mm@2x.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/画板 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/画板 2.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/画板.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/画板.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/画板 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/画板 2.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/画板 2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/画板 2-1.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/画板 2-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/画板 2-3.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/画板 2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/画板 2-1.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/画板 2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/画板 2-2.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/画板 2-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/画板 2-3.png -------------------------------------------------------------------------------- /Aireport.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/画板 2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/画板 2-1.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/画板 2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/画板 2-2.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/画板 2-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/画板 2-3.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/画板 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/画板 2.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/画板 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/画板 2.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/画板 2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/画板 2-1.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/画板 2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/画板 2-2.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/画板 2-3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/画板 2-3.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/画板 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/画板 2.png -------------------------------------------------------------------------------- /Aireport.xcodeproj/project.xcworkspace/xcuserdata/wenba.xcuserdatad/UserInterfaceState.xcuserstate: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/Aireport.xcodeproj/project.xcworkspace/xcuserdata/wenba.xcuserdatad/UserInterfaceState.xcuserstate -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/画板 2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/画板 2-1.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/画板 2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/画板 2-2.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/画板 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/画板 2.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/画板 2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/画板 2-1.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/画板 2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/画板 2-2.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/画板 2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/画板 2.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/画板 2-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/画板 2-1.png -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/画板 2-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jihongboo/Aireport/HEAD/AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/画板 2-2.png -------------------------------------------------------------------------------- /Aireport.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /Aireport.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildSystemType 6 | Latest 7 | 8 | 9 | -------------------------------------------------------------------------------- /Aireport/Aireport.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.application-groups 6 | 7 | group.aireport.widget 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /AireportWidget/AireportWidget.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.application-groups 6 | 7 | group.aireport.widget 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/Good.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0.170", 13 | "alpha" : "1.000", 14 | "blue" : "0.399", 15 | "green" : "0.600" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/Hazardous.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0.493", 13 | "alpha" : "1.000", 14 | "blue" : "0.138", 15 | "green" : "0.006" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/Moderate.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0.984", 13 | "alpha" : "1.000", 14 | "blue" : "0.198", 15 | "green" : "0.872" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/Sensitive .colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0.971", 13 | "alpha" : "1.000", 14 | "blue" : "0.202", 15 | "green" : "0.599" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/Unhealthy.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0.798", 13 | "alpha" : "1.000", 14 | "blue" : "0.198", 15 | "green" : "0.020" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/VeryUnhealthy.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "version" : 1, 4 | "author" : "xcode" 5 | }, 6 | "colors" : [ 7 | { 8 | "idiom" : "universal", 9 | "color" : { 10 | "color-space" : "srgb", 11 | "components" : { 12 | "red" : "0.399", 13 | "alpha" : "1.000", 14 | "blue" : "0.601", 15 | "green" : "0.000" 16 | } 17 | } 18 | } 19 | ] 20 | } -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/airLogo.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "air@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "air@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/location.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "filename" : "location@2x.png", 10 | "scale" : "2x" 11 | }, 12 | { 13 | "idiom" : "universal", 14 | "filename" : "location@3x.png", 15 | "scale" : "3x" 16 | } 17 | ], 18 | "info" : { 19 | "version" : 1, 20 | "author" : "xcode" 21 | } 22 | } -------------------------------------------------------------------------------- /AireportKit/Model/PlaceModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // PlaceModel.swift 3 | // Aireport 4 | // 5 | // Created by Wenba on 2018/3/27. 6 | // Copyright © 2018年 ZacJi. All rights reserved. 7 | // 8 | 9 | public struct PlaceResponse: Codable { 10 | var data: [Place] 11 | } 12 | 13 | public struct Place: Codable { 14 | public var uid: NSInteger 15 | public var aqi: String 16 | public var station: Station 17 | } 18 | 19 | public struct Station: Codable { 20 | public var name: String 21 | } 22 | -------------------------------------------------------------------------------- /AireportKit/AireportKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // AireportKit.h 3 | // AireportKit 4 | // 5 | // Created by Wenba on 2018/3/28. 6 | // Copyright © 2018年 ZacJi. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for AireportKit. 12 | FOUNDATION_EXPORT double AireportKitVersionNumber; 13 | 14 | //! Project version string for AireportKit. 15 | FOUNDATION_EXPORT const unsigned char AireportKitVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | -------------------------------------------------------------------------------- /Aireport.xcodeproj/xcuserdata/wenba.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AireportWCKit/AireportWCKit.h: -------------------------------------------------------------------------------- 1 | // 2 | // AireportWCKit.h 3 | // AireportWCKit 4 | // 5 | // Created by 纪洪波 on 2018/10/25. 6 | // Copyright © 2018 ZacJi. All rights reserved. 7 | // 8 | 9 | #import 10 | 11 | //! Project version number for AireportWCKit. 12 | FOUNDATION_EXPORT double AireportWCKitVersionNumber; 13 | 14 | //! Project version string for AireportWCKit. 15 | FOUNDATION_EXPORT const unsigned char AireportWCKitVersionString[]; 16 | 17 | // In this header, you should import all the public headers of your framework using statements like #import 18 | 19 | 20 | -------------------------------------------------------------------------------- /Aireport.xcodeproj/xcuserdata/jihongbo.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 8 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /AireportKit/Model/AirModel.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AirModel.swift 3 | // Aireport 4 | // 5 | // Created by Wenba on 2018/3/26. 6 | // Copyright © 2018年 ZacJi. All rights reserved. 7 | // 8 | 9 | 10 | public struct AirResponse: Codable { 11 | let data: AirModel 12 | } 13 | 14 | public struct AirModel: Codable { 15 | public init(aqi: Int, idx: Int, cityName: String) { 16 | self.aqi = aqi 17 | self.idx = idx 18 | self.city = City(name: cityName) 19 | } 20 | 21 | public let aqi: Int 22 | public let idx: Int 23 | public let city: City 24 | } 25 | 26 | public struct City: Codable { 27 | public let name: String 28 | } 29 | -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Large Rectangular.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "scale" : "2x", 11 | "screen-width" : ">161" 12 | }, 13 | { 14 | "idiom" : "watch", 15 | "scale" : "2x", 16 | "screen-width" : ">145" 17 | }, 18 | { 19 | "idiom" : "watch", 20 | "scale" : "2x", 21 | "screen-width" : ">183" 22 | } 23 | ], 24 | "info" : { 25 | "version" : 1, 26 | "author" : "xcode" 27 | } 28 | } -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Bezel.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "filename" : "画板 2-2.png", 11 | "screen-width" : ">161", 12 | "scale" : "2x" 13 | }, 14 | { 15 | "idiom" : "watch", 16 | "filename" : "画板 2-1.png", 17 | "screen-width" : ">145", 18 | "scale" : "2x" 19 | }, 20 | { 21 | "idiom" : "watch", 22 | "filename" : "画板 2.png", 23 | "screen-width" : ">183", 24 | "scale" : "2x" 25 | } 26 | ], 27 | "info" : { 28 | "version" : 1, 29 | "author" : "xcode" 30 | } 31 | } -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Corner.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "filename" : "画板 2-2.png", 11 | "screen-width" : ">161", 12 | "scale" : "2x" 13 | }, 14 | { 15 | "idiom" : "watch", 16 | "filename" : "画板 2-1.png", 17 | "screen-width" : ">145", 18 | "scale" : "2x" 19 | }, 20 | { 21 | "idiom" : "watch", 22 | "filename" : "画板 2.png", 23 | "screen-width" : ">183", 24 | "scale" : "2x" 25 | } 26 | ], 27 | "info" : { 28 | "version" : 1, 29 | "author" : "xcode" 30 | } 31 | } -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Graphic Circular.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "scale" : "2x", 6 | "screen-width" : "<=145" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "filename" : "画板 2-2.png", 11 | "screen-width" : ">161", 12 | "scale" : "2x" 13 | }, 14 | { 15 | "idiom" : "watch", 16 | "filename" : "画板 2-1.png", 17 | "screen-width" : ">145", 18 | "scale" : "2x" 19 | }, 20 | { 21 | "idiom" : "watch", 22 | "filename" : "画板 2.png", 23 | "screen-width" : ">183", 24 | "scale" : "2x" 25 | } 26 | ], 27 | "info" : { 28 | "version" : 1, 29 | "author" : "xcode" 30 | } 31 | } -------------------------------------------------------------------------------- /Aireport.xcodeproj/project.xcworkspace/xcuserdata/wenba.xcuserdatad/WorkspaceSettings.xcsettings: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildLocationStyle 6 | UseAppPreferences 7 | BuildSystemType 8 | Latest 9 | CustomBuildLocationType 10 | RelativeToDerivedData 11 | DerivedDataLocationStyle 12 | Default 13 | EnabledFullIndexStoreVisibility 14 | 15 | IssueFilterStyle 16 | ShowActiveSchemeOnly 17 | LiveSourceIssuesEnabled 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Circular.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "filename" : "画板.png", 6 | "screen-width" : "<=145", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "idiom" : "watch", 11 | "filename" : "画板 2-3.png", 12 | "screen-width" : ">161", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "idiom" : "watch", 17 | "filename" : "画板 2-1.png", 18 | "screen-width" : ">145", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "idiom" : "watch", 23 | "filename" : "画板 2.png", 24 | "screen-width" : ">183", 25 | "scale" : "2x" 26 | } 27 | ], 28 | "info" : { 29 | "version" : 1, 30 | "author" : "xcode" 31 | } 32 | } -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Extra Large.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "filename" : "画板 2-3.png", 6 | "screen-width" : "<=145", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "idiom" : "watch", 11 | "filename" : "画板 2-2.png", 12 | "screen-width" : ">161", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "idiom" : "watch", 17 | "filename" : "画板 2-1.png", 18 | "screen-width" : ">145", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "idiom" : "watch", 23 | "filename" : "画板 2.png", 24 | "screen-width" : ">183", 25 | "scale" : "2x" 26 | } 27 | ], 28 | "info" : { 29 | "version" : 1, 30 | "author" : "xcode" 31 | } 32 | } -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Modular.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "filename" : "画板 2-3.png", 6 | "screen-width" : "<=145", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "idiom" : "watch", 11 | "filename" : "画板 2-2.png", 12 | "screen-width" : ">161", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "idiom" : "watch", 17 | "filename" : "画板 2-1.png", 18 | "screen-width" : ">145", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "idiom" : "watch", 23 | "filename" : "画板 2.png", 24 | "screen-width" : ">183", 25 | "scale" : "2x" 26 | } 27 | ], 28 | "info" : { 29 | "version" : 1, 30 | "author" : "xcode" 31 | } 32 | } -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Utilitarian.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "watch", 5 | "filename" : "画板 2-3.png", 6 | "screen-width" : "<=145", 7 | "scale" : "2x" 8 | }, 9 | { 10 | "idiom" : "watch", 11 | "filename" : "画板 2-2.png", 12 | "screen-width" : ">161", 13 | "scale" : "2x" 14 | }, 15 | { 16 | "idiom" : "watch", 17 | "filename" : "画板 2-1.png", 18 | "screen-width" : ">145", 19 | "scale" : "2x" 20 | }, 21 | { 22 | "idiom" : "watch", 23 | "filename" : "画板 2.png", 24 | "screen-width" : ">183", 25 | "scale" : "2x" 26 | } 27 | ], 28 | "info" : { 29 | "version" : 1, 30 | "author" : "xcode" 31 | } 32 | } -------------------------------------------------------------------------------- /AireportWCKit/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | 22 | 23 | -------------------------------------------------------------------------------- /AireportKit/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | FMWK 17 | CFBundleShortVersionString 18 | 1.0 19 | CFBundleVersion 20 | $(CURRENT_PROJECT_VERSION) 21 | NSPrincipalClass 22 | 23 | 24 | 25 | -------------------------------------------------------------------------------- /Aireport.xcodeproj/xcuserdata/wenba.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Aireport.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | AireportKit.xcscheme 13 | 14 | orderHint 15 | 2 16 | 17 | AireportWidget.xcscheme 18 | 19 | orderHint 20 | 1 21 | 22 | 23 | SuppressBuildableAutocreation 24 | 25 | 22BC6AE92068C7F600EC76F3 26 | 27 | primary 28 | 29 | 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /AireportWC Extension/PushNotificationPayload.apns: -------------------------------------------------------------------------------- 1 | { 2 | "aps": { 3 | "alert": { 4 | "body": "Test message", 5 | "title": "Optional title", 6 | "subtitle": "Optional subtitle" 7 | }, 8 | "category": "myCategory", 9 | "thread-id":"5280" 10 | }, 11 | 12 | "WatchKit Simulator Actions": [ 13 | { 14 | "title": "First Button", 15 | "identifier": "firstButtonAction" 16 | } 17 | ], 18 | 19 | "customKey": "Use this file to define a testing payload for your notifications. The aps dictionary specifies the category, alert text and title. The WatchKit Simulator Actions array can provide info for one or more action buttons in addition to the standard Dismiss button. Any other top level keys are custom payload. If you have multiple such JSON files in your project, you'll be able to select them when choosing to debug the notification interface of your Watch App." 20 | } 21 | -------------------------------------------------------------------------------- /Aireport/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // Aireport 4 | // 5 | // Created by Wenba on 2018/3/26. 6 | // Copyright © 2018年 ZacJi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import AireportKit 11 | 12 | @UIApplicationMain 13 | class AppDelegate: UIResponder, UIApplicationDelegate { 14 | var window: UIWindow? 15 | 16 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 17 | UIApplication.shared.setMinimumBackgroundFetchInterval(60 * 30) 18 | AirNotification.regist() 19 | return true 20 | } 21 | 22 | func application(_ application: UIApplication, performFetchWithCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { 23 | AirAPI.getAirReport { (airModel) in 24 | guard let airModel = airModel else { 25 | return 26 | } 27 | AirNotification.sendNotification(air: airModel) 28 | } 29 | completionHandler(.newData) 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /AireportWidget/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | AireportWidget 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | 1.3 21 | CFBundleVersion 22 | 4 23 | NSExtension 24 | 25 | NSExtensionMainStoryboard 26 | MainInterface 27 | NSExtensionPointIdentifier 28 | com.apple.widget-extension 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /AireportKit/API/AirNotifiCation.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AirNotifiCation.swift 3 | // AireportKit 4 | // 5 | // Created by Wenba on 2018/4/26. 6 | // Copyright © 2018年 ZacJi. All rights reserved. 7 | // 8 | 9 | import UserNotifications 10 | 11 | public class AirNotification: NSObject { 12 | public static func regist() { 13 | let center = UNUserNotificationCenter.current() 14 | center.requestAuthorization(options: [.badge, .alert, .sound]) { (granted, error) in 15 | } 16 | center.getNotificationSettings { (settings) in 17 | } 18 | } 19 | 20 | public static func sendNotification(air: AirModel) { 21 | let center = UNUserNotificationCenter.current() 22 | let content = UNMutableNotificationContent() 23 | content.badge = NSNumber(value: air.aqi) 24 | if(air.aqi > 100) { 25 | content.title = AirTools.aqiState(aqi: air.aqi) 26 | content.body = "当前空气质量指数为\(air.aqi)" 27 | } 28 | let request = UNNotificationRequest(identifier: "AQI", content: content, trigger: nil) 29 | center.add(request, withCompletionHandler: { (error) in 30 | }) 31 | 32 | } 33 | } 34 | -------------------------------------------------------------------------------- /AireportWC/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | Aireport 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | APPL 19 | CFBundleShortVersionString 20 | 1.3 21 | CFBundleVersion 22 | 4 23 | UISupportedInterfaceOrientations 24 | 25 | UIInterfaceOrientationPortrait 26 | UIInterfaceOrientationPortraitUpsideDown 27 | 28 | WKCompanionAppBundleIdentifier 29 | com.ZacJi.Aireport 30 | WKWatchKitApp 31 | 32 | 33 | 34 | -------------------------------------------------------------------------------- /AireportWC Extension/NotificationController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // NotificationController.swift 3 | // AireportWC Extension 4 | // 5 | // Created by 纪洪波 on 2018/10/24. 6 | // Copyright © 2018 ZacJi. All rights reserved. 7 | // 8 | 9 | import WatchKit 10 | import Foundation 11 | import UserNotifications 12 | 13 | 14 | class NotificationController: WKUserNotificationInterfaceController { 15 | 16 | override init() { 17 | // Initialize variables here. 18 | super.init() 19 | 20 | // Configure interface objects here. 21 | } 22 | 23 | override func willActivate() { 24 | // This method is called when watch view controller is about to be visible to user 25 | super.willActivate() 26 | } 27 | 28 | override func didDeactivate() { 29 | // This method is called when watch view controller is no longer visible 30 | super.didDeactivate() 31 | } 32 | 33 | override func didReceive(_ notification: UNNotification) { 34 | // This method is called when a notification needs to be presented. 35 | // Implement it if you use a dynamic notification interface. 36 | // Populate your dynamic notification interface as quickly as possible. 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /AireportWidget/TodayViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // TodayViewController.swift 3 | // AireportWidget 4 | // 5 | // Created by Wenba on 2018/3/28. 6 | // Copyright © 2018年 ZacJi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import NotificationCenter 11 | import AireportKit 12 | 13 | class TodayViewController: UIViewController, NCWidgetProviding { 14 | @IBOutlet weak var aqiLable: UILabel! 15 | 16 | override func viewDidLoad() { 17 | super.viewDidLoad() 18 | 19 | let tap = UITapGestureRecognizer(target: self, action: #selector(showApp)) 20 | view.addGestureRecognizer(tap) 21 | } 22 | 23 | @objc func showApp() { 24 | extensionContext?.open(URL(string: "aireport://")!, completionHandler: nil) 25 | } 26 | 27 | func widgetPerformUpdate(completionHandler: (@escaping (NCUpdateResult) -> Void)) { 28 | AirAPI.getAirReportNow { (airModel) in 29 | guard let airModel = airModel else { 30 | return 31 | } 32 | self.aqiLable.text = "\(airModel.aqi)" 33 | self.view.backgroundColor = AirTools.color(aqi: airModel.aqi) 34 | } 35 | completionHandler(NCUpdateResult.newData) 36 | } 37 | 38 | } 39 | -------------------------------------------------------------------------------- /AireportWC Extension/Assets.xcassets/Complication.complicationset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "assets" : [ 3 | { 4 | "idiom" : "watch", 5 | "filename" : "Circular.imageset", 6 | "role" : "circular" 7 | }, 8 | { 9 | "idiom" : "watch", 10 | "filename" : "Extra Large.imageset", 11 | "role" : "extra-large" 12 | }, 13 | { 14 | "idiom" : "watch", 15 | "filename" : "Graphic Bezel.imageset", 16 | "role" : "graphic-bezel" 17 | }, 18 | { 19 | "idiom" : "watch", 20 | "filename" : "Graphic Circular.imageset", 21 | "role" : "graphic-circular" 22 | }, 23 | { 24 | "idiom" : "watch", 25 | "filename" : "Graphic Corner.imageset", 26 | "role" : "graphic-corner" 27 | }, 28 | { 29 | "idiom" : "watch", 30 | "filename" : "Graphic Large Rectangular.imageset", 31 | "role" : "graphic-large-rectangular" 32 | }, 33 | { 34 | "idiom" : "watch", 35 | "filename" : "Modular.imageset", 36 | "role" : "modular" 37 | }, 38 | { 39 | "idiom" : "watch", 40 | "filename" : "Utilitarian.imageset", 41 | "role" : "utilitarian" 42 | } 43 | ], 44 | "info" : { 45 | "version" : 1, 46 | "author" : "xcode" 47 | } 48 | } -------------------------------------------------------------------------------- /Aireport/VC/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // Aireport 4 | // 5 | // Created by Wenba on 2018/3/26. 6 | // Copyright © 2018年 ZacJi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import AireportKit 11 | 12 | class ViewController: UIViewController { 13 | @IBOutlet weak var aqiLable: UILabel! 14 | @IBOutlet weak var cityLable: UILabel! 15 | 16 | override var preferredStatusBarStyle: UIStatusBarStyle { 17 | return .lightContent 18 | } 19 | 20 | override func viewDidLoad() { 21 | super.viewDidLoad() 22 | 23 | NotificationCenter.default.addObserver(self, selector: #selector(getDate), name: UIApplication.didBecomeActiveNotification, object: nil) 24 | } 25 | 26 | override func viewWillAppear(_ animated: Bool) { 27 | super.viewWillAppear(animated) 28 | getDate() 29 | } 30 | 31 | @objc func getDate() { 32 | AirAPI.getAirReportNow { (airModel) in 33 | guard let airModel = airModel else { 34 | self.cityLable.text = "Ohps" 35 | self.aqiLable.text = "000" 36 | return 37 | } 38 | self.cityLable.text = airModel.city.name 39 | self.aqiLable.text = "\(airModel.aqi)" 40 | self.view.backgroundColor = AirTools.color(aqi: airModel.aqi) 41 | UIApplication.shared.applicationIconBadgeNumber = airModel.aqi 42 | } 43 | } 44 | } 45 | 46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |

2 | 3 |

4 | 5 |

6 | 7 | 8 | 9 | 10 | 11 |

12 | 13 | ## Aireport 轻空气 14 | 15 | 一个使用了最精简的代码,最新的iOS11 API,启动速度最快的空气质量App. 16 | * 没有使用任何第三方框架,追求做到最精简,安装包最小,启动速度最快 17 | * 使用了Swift4.0 Encoding and Decoding, model转换效率大增 18 | * Background fetch技术, 每隔一小时后台刷新数据, 将空气质量数据显示在Icon上,无需频繁打开App 19 | * 添加widget 20 | * 数据来源: waqi.info 21 | 22 | ## 截图 23 | 24 | ![Main](https://github.com/jihongboo/Aireport/blob/master/Images/Main.jpg?raw=true) 25 | ![Search city](https://github.com/jihongboo/Aireport/blob/master/Images/CitySearch.jpg?raw=true) 26 | ![Icon](https://github.com/jihongboo/Aireport/blob/master/Images/Icon.jpg?raw=true) 27 | ![Widget](https://github.com/jihongboo/Aireport/blob/master/Images/Widget.jpg?raw=true) 28 | -------------------------------------------------------------------------------- /AireportWC Extension/InterfaceController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // InterfaceController.swift 3 | // AireportWC Extension 4 | // 5 | // Created by 纪洪波 on 2018/10/24. 6 | // Copyright © 2018 ZacJi. All rights reserved. 7 | // 8 | 9 | import WatchKit 10 | import Foundation 11 | import AireportWCKit 12 | 13 | class InterfaceController: WKInterfaceController { 14 | @IBOutlet weak var background: WKInterfaceGroup! 15 | @IBOutlet weak var cityLable: WKInterfaceLabel! 16 | @IBOutlet weak var aqiLable: WKInterfaceLabel! 17 | 18 | private var airModel: AirModel? { 19 | didSet { 20 | guard let airModel = airModel else { 21 | self.cityLable.setText("Ohps") 22 | self.aqiLable.setText("000") 23 | return 24 | } 25 | self.cityLable.setText(airModel.city.name) 26 | self.aqiLable.setText("\(airModel.aqi)") 27 | self.background.setBackgroundColor(AirTools.color(aqi: airModel.aqi)) 28 | } 29 | } 30 | @IBAction func refreshData(_ sender: Any) { 31 | AirAPI.getAirReportNow { (airModel) in 32 | self.airModel = airModel 33 | } 34 | } 35 | 36 | override func awake(withContext context: Any?) { 37 | super.awake(withContext: context) 38 | refreshData(self) 39 | 40 | // Configure interface objects here. 41 | } 42 | 43 | override func willActivate() { 44 | // This method is called when watch view controller is about to be visible to user 45 | super.willActivate() 46 | } 47 | 48 | override func didDeactivate() { 49 | // This method is called when watch view controller is no longer visible 50 | super.didDeactivate() 51 | } 52 | 53 | } 54 | -------------------------------------------------------------------------------- /Aireport/VC/SearchVC.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SearchVC.swift 3 | // Aireport 4 | // 5 | // Created by Wenba on 2018/3/27. 6 | // Copyright © 2018年 ZacJi. All rights reserved. 7 | // 8 | 9 | import UIKit 10 | import AireportKit 11 | class SearchVC: UITableViewController { 12 | @IBOutlet weak var searchBar: UISearchBar! 13 | 14 | var places = [Place]() { 15 | didSet { 16 | tableView.reloadData() 17 | } 18 | } 19 | 20 | override func viewDidLoad() { 21 | super.viewDidLoad() 22 | searchBar.becomeFirstResponder() 23 | } 24 | 25 | override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 26 | return places.count 27 | } 28 | 29 | override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 30 | let cell = tableView.dequeueReusableCell(withIdentifier: "UITableViewCell") 31 | cell?.textLabel?.text = places[indexPath.row].station.name 32 | return cell! 33 | } 34 | 35 | override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { 36 | AirAPI.cityUid = places[indexPath.row].uid 37 | dismiss(animated: true, completion: nil) 38 | } 39 | } 40 | 41 | extension SearchVC: UISearchBarDelegate { 42 | func searchBar(_ searchBar: UISearchBar, textDidChange searchText: String) { 43 | AirAPI.getCities(keyword: searchText) { (places) in 44 | self.places = places 45 | } 46 | } 47 | 48 | func searchBarSearchButtonClicked(_ searchBar: UISearchBar) { 49 | searchBar.resignFirstResponder() 50 | } 51 | 52 | func searchBarCancelButtonClicked(_ searchBar: UISearchBar) { 53 | searchBar.resignFirstResponder() 54 | dismiss(animated: true, completion: nil) 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /AireportKit/API/AirTools.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AirTools.swift 3 | // AireportKit 4 | // 5 | // Created by Wenba on 2018/3/28. 6 | // Copyright © 2018年 ZacJi. All rights reserved. 7 | // 8 | 9 | public class AirTools: NSObject { 10 | public static func color(aqi: NSInteger) ->(UIColor) { 11 | var color = #colorLiteral(red: 0.492726028, green: 0.006434844341, blue: 0.1375600398, alpha: 1) 12 | switch aqi { 13 | case 0...50: 14 | color = #colorLiteral(red: 0.1860606074, green: 0.6550217271, blue: 0.3816407025, alpha: 1) 15 | break 16 | case 51...100: 17 | color = #colorLiteral(red: 0.9837319255, green: 0.8724730611, blue: 0.1980268359, alpha: 1) 18 | break 19 | case 101...150: 20 | color = #colorLiteral(red: 0.9706934094, green: 0.5985591412, blue: 0.2020688355, alpha: 1) 21 | break 22 | case 151...200: 23 | color = #colorLiteral(red: 0.7984669805, green: 0.01951491833, blue: 0.1984502971, alpha: 1) 24 | break 25 | case 201...300: 26 | color = #colorLiteral(red: 0.3991004229, green: 0, blue: 0.6014233828, alpha: 1) 27 | break 28 | default: 29 | break 30 | } 31 | return color 32 | } 33 | 34 | public static func aqiState(aqi: NSInteger) ->(String) { 35 | var state = "严重污染" 36 | switch aqi { 37 | case 0...50: 38 | state = "优" 39 | break 40 | case 51...100: 41 | state = "良" 42 | break 43 | case 101...150: 44 | state = "轻度污染" 45 | break 46 | case 151...200: 47 | state = "中度污染" 48 | break 49 | case 201...300: 50 | state = "重度污染" 51 | break 52 | default: 53 | break 54 | } 55 | return state 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /AireportWC Extension/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleDisplayName 8 | AireportWC Extension 9 | CFBundleExecutable 10 | $(EXECUTABLE_NAME) 11 | CFBundleIdentifier 12 | $(PRODUCT_BUNDLE_IDENTIFIER) 13 | CFBundleInfoDictionaryVersion 14 | 6.0 15 | CFBundleName 16 | $(PRODUCT_NAME) 17 | CFBundlePackageType 18 | XPC! 19 | CFBundleShortVersionString 20 | 1.3 21 | CFBundleVersion 22 | 4 23 | CLKComplicationPrincipalClass 24 | $(PRODUCT_MODULE_NAME).ComplicationController 25 | CLKComplicationSupportedFamilies 26 | 27 | CLKComplicationFamilyModularSmall 28 | CLKComplicationFamilyModularLarge 29 | CLKComplicationFamilyUtilitarianSmall 30 | CLKComplicationFamilyUtilitarianSmallFlat 31 | CLKComplicationFamilyUtilitarianLarge 32 | CLKComplicationFamilyCircularSmall 33 | CLKComplicationFamilyExtraLarge 34 | CLKComplicationFamilyGraphicCorner 35 | CLKComplicationFamilyGraphicBezel 36 | CLKComplicationFamilyGraphicCircular 37 | CLKComplicationFamilyGraphicRectangular 38 | 39 | NSExtension 40 | 41 | NSExtensionAttributes 42 | 43 | WKAppBundleIdentifier 44 | com.ZacJi.Aireport.watchkitapp 45 | 46 | NSExtensionPointIdentifier 47 | com.apple.watchkit 48 | 49 | WKExtensionDelegateClassName 50 | $(PRODUCT_MODULE_NAME).ExtensionDelegate 51 | 52 | 53 | -------------------------------------------------------------------------------- /Aireport/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | CFBundleDevelopmentRegion 6 | $(DEVELOPMENT_LANGUAGE) 7 | CFBundleExecutable 8 | $(EXECUTABLE_NAME) 9 | CFBundleIdentifier 10 | $(PRODUCT_BUNDLE_IDENTIFIER) 11 | CFBundleInfoDictionaryVersion 12 | 6.0 13 | CFBundleName 14 | $(PRODUCT_NAME) 15 | CFBundlePackageType 16 | APPL 17 | CFBundleShortVersionString 18 | 1.3 19 | CFBundleURLTypes 20 | 21 | 22 | CFBundleTypeRole 23 | Editor 24 | CFBundleURLName 25 | widget 26 | CFBundleURLSchemes 27 | 28 | aireport 29 | 30 | 31 | 32 | CFBundleVersion 33 | 4 34 | LSRequiresIPhoneOS 35 | 36 | UIBackgroundModes 37 | 38 | fetch 39 | 40 | UILaunchStoryboardName 41 | LaunchScreen 42 | UIMainStoryboardFile 43 | Main 44 | UIRequiredDeviceCapabilities 45 | 46 | armv7 47 | 48 | UIStatusBarStyle 49 | UIStatusBarStyleLightContent 50 | UISupportedInterfaceOrientations 51 | 52 | UIInterfaceOrientationPortrait 53 | UIInterfaceOrientationLandscapeLeft 54 | UIInterfaceOrientationLandscapeRight 55 | 56 | UISupportedInterfaceOrientations~ipad 57 | 58 | UIInterfaceOrientationPortrait 59 | UIInterfaceOrientationPortraitUpsideDown 60 | UIInterfaceOrientationLandscapeLeft 61 | UIInterfaceOrientationLandscapeRight 62 | 63 | 64 | 65 | -------------------------------------------------------------------------------- /Aireport.xcodeproj/xcuserdata/jihongbo.xcuserdatad/xcschemes/xcschememanagement.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | SchemeUserState 6 | 7 | Aireport.xcscheme 8 | 9 | orderHint 10 | 0 11 | 12 | AireportKit.xcscheme 13 | 14 | orderHint 15 | 2 16 | 17 | AireportKit.xcscheme_^#shared#^_ 18 | 19 | orderHint 20 | 2 21 | 22 | AireportWC (Complication).xcscheme 23 | 24 | orderHint 25 | 5 26 | 27 | AireportWC (Complication).xcscheme_^#shared#^_ 28 | 29 | orderHint 30 | 4 31 | 32 | AireportWC (Glance).xcscheme 33 | 34 | orderHint 35 | 5 36 | 37 | AireportWC (Notification).xcscheme 38 | 39 | orderHint 40 | 4 41 | 42 | AireportWC (Notification).xcscheme_^#shared#^_ 43 | 44 | orderHint 45 | 5 46 | 47 | AireportWC.xcscheme 48 | 49 | orderHint 50 | 3 51 | 52 | AireportWC.xcscheme_^#shared#^_ 53 | 54 | orderHint 55 | 3 56 | 57 | AireportWCKit.xcscheme 58 | 59 | orderHint 60 | 6 61 | 62 | AireportWCKit.xcscheme_^#shared#^_ 63 | 64 | orderHint 65 | 6 66 | 67 | AireportWidget.xcscheme 68 | 69 | orderHint 70 | 1 71 | 72 | 73 | SuppressBuildableAutocreation 74 | 75 | 2218413C206B390E008458C2 76 | 77 | primary 78 | 79 | 80 | 22BC6AE92068C7F600EC76F3 81 | 82 | primary 83 | 84 | 85 | 86 | 87 | 88 | -------------------------------------------------------------------------------- /AireportWC/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "size" : "24x24", 5 | "subtype" : "38mm", 6 | "filename" : "Icon38mm@2x.png", 7 | "idiom" : "watch", 8 | "role" : "notificationCenter", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "size" : "27.5x27.5", 13 | "subtype" : "42mm", 14 | "filename" : "Icon42mm@2x.png", 15 | "idiom" : "watch", 16 | "role" : "notificationCenter", 17 | "scale" : "2x" 18 | }, 19 | { 20 | "size" : "29x29", 21 | "filename" : "IconSettings@2x.png", 22 | "idiom" : "watch", 23 | "role" : "companionSettings", 24 | "scale" : "2x" 25 | }, 26 | { 27 | "size" : "29x29", 28 | "filename" : "IconSettings@3x.png", 29 | "idiom" : "watch", 30 | "role" : "companionSettings", 31 | "scale" : "3x" 32 | }, 33 | { 34 | "size" : "40x40", 35 | "subtype" : "38mm", 36 | "filename" : "IconLauncher@2x.png", 37 | "idiom" : "watch", 38 | "role" : "appLauncher", 39 | "scale" : "2x" 40 | }, 41 | { 42 | "size" : "86x86", 43 | "subtype" : "38mm", 44 | "filename" : "IconQuickLook38mm@2x.png", 45 | "idiom" : "watch", 46 | "role" : "quickLook", 47 | "scale" : "2x" 48 | }, 49 | { 50 | "size" : "98x98", 51 | "subtype" : "42mm", 52 | "filename" : "IconQuickLook42mm@2x.png", 53 | "idiom" : "watch", 54 | "role" : "quickLook", 55 | "scale" : "2x" 56 | }, 57 | { 58 | "size" : "1024x1024", 59 | "filename" : "watch-marketing.png", 60 | "scale" : "1x", 61 | "idiom" : "watch-marketing" 62 | }, 63 | { 64 | "size" : "44x44", 65 | "subtype" : "40mm", 66 | "filename" : "Icon40mm@2x.png", 67 | "idiom" : "watch", 68 | "role" : "appLauncher", 69 | "scale" : "2x" 70 | }, 71 | { 72 | "size" : "50x50", 73 | "subtype" : "44mm", 74 | "filename" : "Icon44mm@2x.png", 75 | "idiom" : "watch", 76 | "role" : "appLauncher", 77 | "scale" : "2x" 78 | }, 79 | { 80 | "size" : "108x108", 81 | "subtype" : "44mm", 82 | "filename" : "IconQuickLook44mm@2x.png", 83 | "idiom" : "watch", 84 | "role" : "quickLook", 85 | "scale" : "2x" 86 | } 87 | ], 88 | "info" : { 89 | "version" : 1, 90 | "author" : "xcode" 91 | } 92 | } -------------------------------------------------------------------------------- /AireportKit/API/AirAPI.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AirAPI.swift 3 | // Aireport 4 | // 5 | // Created by Wenba on 2018/3/26. 6 | // Copyright © 2018年 ZacJi. All rights reserved. 7 | // 8 | 9 | public class AirAPI: NSObject { 10 | static let token = "ff6bd257aab3a6d9a4f0b29625dd9d3668276c7d" 11 | public static var cityUid: NSInteger! { 12 | get { 13 | if let cityUid = userDefault.value(forKey: "cityUid") as? NSInteger { 14 | return cityUid 15 | } 16 | return 0 17 | } 18 | set { 19 | userDefault.set(newValue, forKey: "cityUid") 20 | } 21 | } 22 | static let userDefault = UserDefaults(suiteName: "group.aireport.widget")! 23 | 24 | 25 | public static func getAirReportNow(completeBlock: @escaping ((_ airModel: AirModel?)->())) { 26 | if let data = userDefault.value(forKey: "aqi") as? Data { 27 | AirAPI.handelData(data: data, completeBlock: completeBlock) 28 | } 29 | AirAPI.getAirReport(completeBlock: completeBlock) 30 | } 31 | 32 | public static func getAirReport(completeBlock: @escaping ((_ airModel: AirModel?)->())) { 33 | let city = cityUid! == 0 ? "here" : "@\(cityUid!)" 34 | let request = URLRequest(url: URL(string: "https://api.waqi.info/feed/\(city)/?token=\(token)")!) 35 | URLSession.shared.dataTask(with: request) { (data, response, error) in 36 | guard let data = data else { 37 | return 38 | } 39 | userDefault.set(data, forKey: "aqi") 40 | AirAPI.handelData(data: data, completeBlock: completeBlock) 41 | }.resume() 42 | } 43 | 44 | public static func getCities(keyword: String, completeBlock: @escaping ((_ places: [Place])->())) { 45 | let request = URLRequest(url: URL(string: "https://api.waqi.info/search/?token=\(token)&keyword=\(keyword)")!) 46 | URLSession.shared.dataTask(with: request) { (data, response, error) in 47 | guard let data = data, let obj = try? JSONDecoder().decode(PlaceResponse.self, from: data) else { 48 | return 49 | } 50 | DispatchQueue.main.async(execute: { 51 | completeBlock(obj.data) 52 | }) 53 | }.resume() 54 | } 55 | 56 | static func handelData(data:Data, completeBlock: @escaping ((_ airModel: AirModel?)->())) { 57 | if let obj = try? JSONDecoder().decode(AirResponse.self, from: data) { 58 | DispatchQueue.main.async(execute: { 59 | completeBlock(obj.data) 60 | }) 61 | }else { 62 | completeBlock(nil) 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /AireportWC Extension/ExtensionDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ExtensionDelegate.swift 3 | // AireportWC Extension 4 | // 5 | // Created by 纪洪波 on 2018/10/24. 6 | // Copyright © 2018 ZacJi. All rights reserved. 7 | // 8 | 9 | import WatchKit 10 | 11 | class ExtensionDelegate: NSObject, WKExtensionDelegate { 12 | 13 | func applicationDidFinishLaunching() { 14 | // Perform any final initialization of your application. 15 | } 16 | 17 | func applicationDidBecomeActive() { 18 | // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 19 | } 20 | 21 | func applicationWillResignActive() { 22 | // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. 23 | // Use this method to pause ongoing tasks, disable timers, etc. 24 | } 25 | 26 | func handle(_ backgroundTasks: Set) { 27 | // Sent when the system needs to launch the application in the background to process tasks. Tasks arrive in a set, so loop through and process each one. 28 | for task in backgroundTasks { 29 | // Use a switch statement to check the task type 30 | switch task { 31 | case let backgroundTask as WKApplicationRefreshBackgroundTask: 32 | // Be sure to complete the background task once you’re done. 33 | backgroundTask.setTaskCompletedWithSnapshot(false) 34 | case let snapshotTask as WKSnapshotRefreshBackgroundTask: 35 | // Snapshot tasks have a unique completion call, make sure to set your expiration date 36 | snapshotTask.setTaskCompleted(restoredDefaultState: true, estimatedSnapshotExpiration: Date.distantFuture, userInfo: nil) 37 | case let connectivityTask as WKWatchConnectivityRefreshBackgroundTask: 38 | // Be sure to complete the connectivity task once you’re done. 39 | connectivityTask.setTaskCompletedWithSnapshot(false) 40 | case let urlSessionTask as WKURLSessionRefreshBackgroundTask: 41 | // Be sure to complete the URL session task once you’re done. 42 | urlSessionTask.setTaskCompletedWithSnapshot(false) 43 | case let relevantShortcutTask as WKRelevantShortcutRefreshBackgroundTask: 44 | // Be sure to complete the relevant-shortcut task once you're done. 45 | relevantShortcutTask.setTaskCompletedWithSnapshot(false) 46 | case let intentDidRunTask as WKIntentDidRunRefreshBackgroundTask: 47 | // Be sure to complete the intent-did-run task once you're done. 48 | intentDidRunTask.setTaskCompletedWithSnapshot(false) 49 | default: 50 | // make sure to complete unhandled task types 51 | task.setTaskCompletedWithSnapshot(false) 52 | } 53 | } 54 | } 55 | 56 | } 57 | -------------------------------------------------------------------------------- /Aireport.xcodeproj/xcuserdata/jihongbo.xcuserdatad/xcschemes/Aireport.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 30 | 31 | 32 | 33 | 39 | 40 | 41 | 42 | 43 | 44 | 54 | 56 | 62 | 63 | 64 | 65 | 69 | 70 | 71 | 72 | 73 | 74 | 80 | 82 | 88 | 89 | 90 | 91 | 93 | 94 | 97 | 98 | 99 | -------------------------------------------------------------------------------- /Aireport/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | }, 6 | "images" : [ 7 | { 8 | "filename" : "Icon-40.png", 9 | "size" : "40x40", 10 | "idiom" : "ipad", 11 | "scale" : "1x" 12 | }, 13 | { 14 | "filename" : "Icon-40@2x.png", 15 | "size" : "40x40", 16 | "idiom" : "ipad", 17 | "scale" : "2x" 18 | }, 19 | { 20 | "filename" : "Icon-60@2x.png", 21 | "size" : "60x60", 22 | "idiom" : "iphone", 23 | "scale" : "2x" 24 | }, 25 | { 26 | "filename" : "Icon-72.png", 27 | "size" : "72x72", 28 | "idiom" : "ipad", 29 | "scale" : "1x" 30 | }, 31 | { 32 | "filename" : "Icon-72@2x.png", 33 | "size" : "72x72", 34 | "idiom" : "ipad", 35 | "scale" : "2x" 36 | }, 37 | { 38 | "filename" : "Icon-76.png", 39 | "size" : "76x76", 40 | "idiom" : "ipad", 41 | "scale" : "1x" 42 | }, 43 | { 44 | "filename" : "Icon-76@2x.png", 45 | "size" : "76x76", 46 | "idiom" : "ipad", 47 | "scale" : "2x" 48 | }, 49 | { 50 | "filename" : "Icon-Small-50.png", 51 | "size" : "50x50", 52 | "idiom" : "ipad", 53 | "scale" : "1x" 54 | }, 55 | { 56 | "filename" : "Icon-Small-50@2x.png", 57 | "size" : "50x50", 58 | "idiom" : "ipad", 59 | "scale" : "2x" 60 | }, 61 | { 62 | "filename" : "Icon-Small.png", 63 | "size" : "29x29", 64 | "idiom" : "iphone", 65 | "scale" : "1x" 66 | }, 67 | { 68 | "filename" : "Icon-Small@2x.png", 69 | "size" : "29x29", 70 | "idiom" : "iphone", 71 | "scale" : "2x" 72 | }, 73 | { 74 | "filename" : "Icon.png", 75 | "size" : "57x57", 76 | "idiom" : "iphone", 77 | "scale" : "1x" 78 | }, 79 | { 80 | "filename" : "Icon@2x.png", 81 | "size" : "57x57", 82 | "idiom" : "iphone", 83 | "scale" : "2x" 84 | }, 85 | { 86 | "filename" : "Icon-Small@3x.png", 87 | "size" : "29x29", 88 | "idiom" : "iphone", 89 | "scale" : "3x" 90 | }, 91 | { 92 | "filename" : "Icon-40@3x.png", 93 | "size" : "40x40", 94 | "idiom" : "iphone", 95 | "scale" : "3x" 96 | }, 97 | { 98 | "filename" : "Icon-60@3x.png", 99 | "size" : "60x60", 100 | "idiom" : "iphone", 101 | "scale" : "3x" 102 | }, 103 | { 104 | "filename" : "Icon-40@2x.png", 105 | "size" : "40x40", 106 | "idiom" : "iphone", 107 | "scale" : "2x" 108 | }, 109 | { 110 | "filename" : "Icon-Small.png", 111 | "size" : "29x29", 112 | "idiom" : "ipad", 113 | "scale" : "1x" 114 | }, 115 | { 116 | "filename" : "Icon-Small@2x.png", 117 | "size" : "29x29", 118 | "idiom" : "ipad", 119 | "scale" : "2x" 120 | }, 121 | { 122 | "filename" : "Icon-83.5@2x.png", 123 | "size" : "83.5x83.5", 124 | "idiom" : "ipad", 125 | "scale" : "2x" 126 | }, 127 | { 128 | "filename" : "NotificationIcon@2x.png", 129 | "size" : "20x20", 130 | "idiom" : "iphone", 131 | "scale" : "2x" 132 | }, 133 | { 134 | "filename" : "NotificationIcon@3x.png", 135 | "size" : "20x20", 136 | "idiom" : "iphone", 137 | "scale" : "3x" 138 | }, 139 | { 140 | "filename" : "NotificationIcon~ipad.png", 141 | "size" : "20x20", 142 | "idiom" : "ipad", 143 | "scale" : "1x" 144 | }, 145 | { 146 | "filename" : "NotificationIcon~ipad@2x.png", 147 | "size" : "20x20", 148 | "idiom" : "ipad", 149 | "scale" : "2x" 150 | }, 151 | { 152 | "filename" : "ios-marketing.png", 153 | "size" : "1024x1024", 154 | "idiom" : "ios-marketing", 155 | "scale" : "1x" 156 | } 157 | ] 158 | } -------------------------------------------------------------------------------- /Aireport.xcodeproj/xcuserdata/wenba.xcuserdatad/xcschemes/Aireport.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 5 | 8 | 9 | 15 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 40 | 41 | 42 | 43 | 44 | 45 | 56 | 58 | 64 | 65 | 66 | 67 | 71 | 72 | 73 | 74 | 75 | 76 | 82 | 84 | 90 | 91 | 92 | 93 | 95 | 96 | 99 | 100 | 101 | -------------------------------------------------------------------------------- /AireportWidget/Base.lproj/MainInterface.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /Aireport/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | -------------------------------------------------------------------------------- /Aireport.xcodeproj/xcuserdata/jihongbo.xcuserdatad/xcschemes/AireportWidget.xcscheme: -------------------------------------------------------------------------------- 1 | 2 | 6 | 9 | 10 | 16 | 22 | 23 | 24 | 30 | 36 | 37 | 38 | 39 | 40 | 45 | 46 | 47 | 48 | 54 | 55 | 56 | 57 | 58 | 59 | 70 | 73 | 79 | 80 | 81 | 82 | 88 | 89 | 90 | 91 | 92 | 93 | 100 | 102 | 108 | 109 | 110 | 111 | 113 | 114 | 117 | 118 | 119 | -------------------------------------------------------------------------------- /AireportWC/Base.lproj/Interface.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 22 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | -------------------------------------------------------------------------------- /AireportWC Extension/ComplicationController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ComplicationController.swift 3 | // AireportWC Extension 4 | // 5 | // Created by 纪洪波 on 2018/10/24. 6 | // Copyright © 2018 ZacJi. All rights reserved. 7 | // 8 | 9 | import ClockKit 10 | import AireportWCKit 11 | 12 | class ComplicationController: NSObject, CLKComplicationDataSource { 13 | 14 | // MARK: - Timeline Configuration 15 | 16 | func getSupportedTimeTravelDirections(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimeTravelDirections) -> Void) { 17 | handler([.forward, .backward]) 18 | } 19 | 20 | func getTimelineStartDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) { 21 | handler(nil) 22 | } 23 | 24 | func getTimelineEndDate(for complication: CLKComplication, withHandler handler: @escaping (Date?) -> Void) { 25 | handler(nil) 26 | } 27 | 28 | func getPrivacyBehavior(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationPrivacyBehavior) -> Void) { 29 | handler(.showOnLockScreen) 30 | } 31 | 32 | // MARK: - Timeline Population 33 | 34 | func getCurrentTimelineEntry(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTimelineEntry?) -> Void) { 35 | // Call the handler with the current timeline entry 36 | getEntry(complication: complication, handler: handler) 37 | } 38 | 39 | func getTimelineEntries(for complication: CLKComplication, before date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) { 40 | // Call the handler with the timeline entries prior to the given date 41 | handler(nil) 42 | } 43 | 44 | func getTimelineEntries(for complication: CLKComplication, after date: Date, limit: Int, withHandler handler: @escaping ([CLKComplicationTimelineEntry]?) -> Void) { 45 | // Call the handler with the timeline entries after to the given date 46 | handler(nil) 47 | } 48 | 49 | // MARK: - Placeholder Templates 50 | 51 | func getLocalizableSampleTemplate(for complication: CLKComplication, withHandler handler: @escaping (CLKComplicationTemplate?) -> Void) { 52 | let airModel = AirModel(aqi: 0, idx: 0, cityName: "City") 53 | handler(getTemplate(complication: complication, airModel: airModel)) 54 | } 55 | 56 | func getEntry(complication: CLKComplication, handler: @escaping (CLKComplicationTimelineEntry?) -> Void) { 57 | AirAPI.getAirReport { (airModel) in 58 | guard let airModel = airModel, let complication = self.getTemplate(complication: complication, airModel: airModel) else{ 59 | handler(nil) 60 | return 61 | } 62 | handler(CLKComplicationTimelineEntry(date: Date(), complicationTemplate: complication)) 63 | } 64 | } 65 | 66 | func getTemplate(complication: CLKComplication, airModel: AirModel) -> CLKComplicationTemplate? { 67 | let aqi = airModel.aqi 68 | let city = airModel.city.name 69 | switch complication.family { 70 | case .circularSmall: 71 | let template = CLKComplicationTemplateCircularSmallStackText() 72 | template.line1TextProvider = CLKSimpleTextProvider(text: "AQI") 73 | template.line2TextProvider = CLKSimpleTextProvider(text: "\(aqi)") 74 | return template 75 | case .modularSmall: 76 | let template = CLKComplicationTemplateModularSmallSimpleText() 77 | template.textProvider = CLKSimpleTextProvider(text: "AQI \(aqi)") 78 | return template 79 | case .modularLarge: 80 | let template = CLKComplicationTemplateModularLargeStandardBody() 81 | template.headerTextProvider = CLKSimpleTextProvider(text: "AQI") 82 | template.body1TextProvider = CLKSimpleTextProvider(text: "\(city)") 83 | template.body2TextProvider = CLKSimpleTextProvider(text: "\(aqi)") 84 | return template 85 | case .utilitarianSmall: 86 | let template = CLKComplicationTemplateUtilitarianSmallFlat() 87 | template.textProvider = CLKSimpleTextProvider(text: "\(aqi)") 88 | template.imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Complication/Utilitarian")!) 89 | return template 90 | case .utilitarianSmallFlat: 91 | let template = CLKComplicationTemplateUtilitarianSmallFlat() 92 | template.textProvider = CLKSimpleTextProvider(text: "\(aqi)") 93 | template.imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Complication/Utilitarian")!) 94 | return template 95 | case .utilitarianLarge: 96 | let template = CLKComplicationTemplateUtilitarianLargeFlat() 97 | template.textProvider = CLKSimpleTextProvider(text: "\(aqi)") 98 | template.imageProvider = CLKImageProvider(onePieceImage: UIImage(named: "Complication/Utilitarian")!) 99 | return template 100 | case .extraLarge: 101 | let template = CLKComplicationTemplateCircularSmallStackText() 102 | template.line1TextProvider = CLKSimpleTextProvider(text: "AQI") 103 | template.line2TextProvider = CLKSimpleTextProvider(text: "\(aqi)") 104 | break 105 | case .graphicCorner: 106 | let template = CLKComplicationTemplateGraphicCornerGaugeText() 107 | template.gaugeProvider = CLKSimpleGaugeProvider(style: .ring, gaugeColors: [.green, .red], gaugeColorLocations: nil, fillFraction: (Float(aqi) / 300.0)) 108 | template.leadingTextProvider = CLKSimpleTextProvider(text: "0") 109 | template.trailingTextProvider = CLKSimpleTextProvider(text: "300") 110 | template.outerTextProvider = CLKSimpleTextProvider(text: "\(aqi)") 111 | return template 112 | case .graphicBezel: 113 | let template = CLKComplicationTemplateGraphicBezelCircularText() 114 | let circularTemplate = CLKComplicationTemplateGraphicCircularImage() 115 | circularTemplate.imageProvider = CLKFullColorImageProvider(fullColorImage: UIImage(named: "Complication/Graphic Corner")!) 116 | template.circularTemplate = circularTemplate 117 | template.textProvider = CLKSimpleTextProvider(text: "\(aqi)") 118 | return template 119 | case .graphicCircular: 120 | let template = CLKComplicationTemplateGraphicCircularOpenGaugeRangeText() 121 | template.gaugeProvider = CLKSimpleGaugeProvider(style: .ring, gaugeColors: [.green, .red], gaugeColorLocations: nil, fillFraction: (Float(aqi) / 300.0)) 122 | template.leadingTextProvider = CLKSimpleTextProvider(text: "0") 123 | template.trailingTextProvider = CLKSimpleTextProvider(text: "300") 124 | template.centerTextProvider = CLKSimpleTextProvider(text: "\(aqi)") 125 | return template 126 | case .graphicRectangular: 127 | let template = CLKComplicationTemplateGraphicRectangularStandardBody() 128 | template.headerTextProvider = CLKSimpleTextProvider(text: "AQI") 129 | template.body1TextProvider = CLKSimpleTextProvider(text: "\(city)") 130 | template.body2TextProvider = CLKSimpleTextProvider(text: "\(aqi)") 131 | template.headerImageProvider = CLKFullColorImageProvider(fullColorImage: UIImage(named: "Complication/Graphic Corner")!) 132 | return template 133 | @unknown default: 134 | return nil 135 | } 136 | return nil 137 | } 138 | } 139 | -------------------------------------------------------------------------------- /Aireport/VC/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 27 | 33 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | Title 75 | Title 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | 126 | 127 | -------------------------------------------------------------------------------- /Aireport.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 48; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | 22184140206B390E008458C2 /* NotificationCenter.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2218413F206B390E008458C2 /* NotificationCenter.framework */; }; 11 | 22184143206B390E008458C2 /* TodayViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22184142206B390E008458C2 /* TodayViewController.swift */; }; 12 | 22184146206B390E008458C2 /* MainInterface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 22184144206B390E008458C2 /* MainInterface.storyboard */; }; 13 | 2218414A206B390F008458C2 /* AireportWidget.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = 2218413D206B390E008458C2 /* AireportWidget.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 14 | 2218415A206B43E1008458C2 /* AireportKit.h in Headers */ = {isa = PBXBuildFile; fileRef = 22184158206B43E1008458C2 /* AireportKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15 | 2218415D206B43E1008458C2 /* AireportKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22184156206B43E1008458C2 /* AireportKit.framework */; }; 16 | 2218415E206B43E1008458C2 /* AireportKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 22184156206B43E1008458C2 /* AireportKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 17 | 22184163206B4407008458C2 /* AireportKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 22184156206B43E1008458C2 /* AireportKit.framework */; }; 18 | 22184164206B4767008458C2 /* AirAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22BC6B012068D1CF00EC76F3 /* AirAPI.swift */; }; 19 | 22184165206B47CC008458C2 /* AirModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22BC6AFF2068CA5D00EC76F3 /* AirModel.swift */; }; 20 | 22184166206B47D0008458C2 /* PlaceModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22BC6B082069E85C00EC76F3 /* PlaceModel.swift */; }; 21 | 22184168206B6C76008458C2 /* AirTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22184167206B6C76008458C2 /* AirTools.swift */; }; 22 | 22BC6AEE2068C7F600EC76F3 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22BC6AED2068C7F600EC76F3 /* AppDelegate.swift */; }; 23 | 22BC6AF02068C7F600EC76F3 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22BC6AEF2068C7F600EC76F3 /* ViewController.swift */; }; 24 | 22BC6AF32068C7F600EC76F3 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 22BC6AF12068C7F600EC76F3 /* Main.storyboard */; }; 25 | 22BC6AF82068C7F600EC76F3 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 22BC6AF62068C7F600EC76F3 /* LaunchScreen.storyboard */; }; 26 | 22BC6B042069E3EA00EC76F3 /* SearchVC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22BC6B032069E3EA00EC76F3 /* SearchVC.swift */; }; 27 | 22F8D163209173E90009BF29 /* AirNotifiCation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22F8D162209173E90009BF29 /* AirNotifiCation.swift */; }; 28 | FF5FE9EB2180C4AF00625AA3 /* Interface.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = FF5FE9E92180C4AF00625AA3 /* Interface.storyboard */; }; 29 | FF5FE9ED2180C4B000625AA3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FF5FE9EC2180C4B000625AA3 /* Assets.xcassets */; }; 30 | FF5FE9F42180C4B000625AA3 /* AireportWC Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = FF5FE9F32180C4B000625AA3 /* AireportWC Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 31 | FF5FE9F92180C4B000625AA3 /* InterfaceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF5FE9F82180C4B000625AA3 /* InterfaceController.swift */; }; 32 | FF5FE9FB2180C4B000625AA3 /* ExtensionDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF5FE9FA2180C4B000625AA3 /* ExtensionDelegate.swift */; }; 33 | FF5FE9FD2180C4B000625AA3 /* NotificationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF5FE9FC2180C4B000625AA3 /* NotificationController.swift */; }; 34 | FF5FE9FF2180C4B000625AA3 /* ComplicationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF5FE9FE2180C4B000625AA3 /* ComplicationController.swift */; }; 35 | FF5FEA012180C4B100625AA3 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = FF5FEA002180C4B100625AA3 /* Assets.xcassets */; }; 36 | FF5FEA062180C4B100625AA3 /* AireportWC.app in Embed Watch Content */ = {isa = PBXBuildFile; fileRef = FF5FE9E72180C4AF00625AA3 /* AireportWC.app */; }; 37 | FF93CAE6206BCD9500CB2813 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 22BC6AF42068C7F600EC76F3 /* Assets.xcassets */; }; 38 | FFAAAABE218214F600C922C1 /* AireportWCKit.h in Headers */ = {isa = PBXBuildFile; fileRef = FFAAAABC218214F600C922C1 /* AireportWCKit.h */; settings = {ATTRIBUTES = (Public, ); }; }; 39 | FFAAAAC1218214F600C922C1 /* AireportWCKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FFAAAABA218214F600C922C1 /* AireportWCKit.framework */; }; 40 | FFAAAAC2218214F600C922C1 /* AireportWCKit.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = FFAAAABA218214F600C922C1 /* AireportWCKit.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 41 | FFAAAAC62182150800C922C1 /* AirTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22184167206B6C76008458C2 /* AirTools.swift */; }; 42 | FFAAAAC72182150800C922C1 /* AirAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22BC6B012068D1CF00EC76F3 /* AirAPI.swift */; }; 43 | FFAAAAC82182150800C922C1 /* AirNotifiCation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22F8D162209173E90009BF29 /* AirNotifiCation.swift */; }; 44 | FFAAAAC92182150D00C922C1 /* AirModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22BC6AFF2068CA5D00EC76F3 /* AirModel.swift */; }; 45 | FFAAAACA2182150D00C922C1 /* PlaceModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22BC6B082069E85C00EC76F3 /* PlaceModel.swift */; }; 46 | /* End PBXBuildFile section */ 47 | 48 | /* Begin PBXContainerItemProxy section */ 49 | 22184148206B390F008458C2 /* PBXContainerItemProxy */ = { 50 | isa = PBXContainerItemProxy; 51 | containerPortal = 22BC6AE22068C7F600EC76F3 /* Project object */; 52 | proxyType = 1; 53 | remoteGlobalIDString = 2218413C206B390E008458C2; 54 | remoteInfo = AireportWidget; 55 | }; 56 | 2218415B206B43E1008458C2 /* PBXContainerItemProxy */ = { 57 | isa = PBXContainerItemProxy; 58 | containerPortal = 22BC6AE22068C7F600EC76F3 /* Project object */; 59 | proxyType = 1; 60 | remoteGlobalIDString = 22184155206B43E1008458C2; 61 | remoteInfo = AireportKit; 62 | }; 63 | FF5FE9F52180C4B000625AA3 /* PBXContainerItemProxy */ = { 64 | isa = PBXContainerItemProxy; 65 | containerPortal = 22BC6AE22068C7F600EC76F3 /* Project object */; 66 | proxyType = 1; 67 | remoteGlobalIDString = FF5FE9F22180C4B000625AA3; 68 | remoteInfo = "AireportWC Extension"; 69 | }; 70 | FF5FEA042180C4B100625AA3 /* PBXContainerItemProxy */ = { 71 | isa = PBXContainerItemProxy; 72 | containerPortal = 22BC6AE22068C7F600EC76F3 /* Project object */; 73 | proxyType = 1; 74 | remoteGlobalIDString = FF5FE9E62180C4AF00625AA3; 75 | remoteInfo = AireportWC; 76 | }; 77 | FFAAAABF218214F600C922C1 /* PBXContainerItemProxy */ = { 78 | isa = PBXContainerItemProxy; 79 | containerPortal = 22BC6AE22068C7F600EC76F3 /* Project object */; 80 | proxyType = 1; 81 | remoteGlobalIDString = FFAAAAB9218214F600C922C1; 82 | remoteInfo = AireportWCKit; 83 | }; 84 | /* End PBXContainerItemProxy section */ 85 | 86 | /* Begin PBXCopyFilesBuildPhase section */ 87 | 2218414E206B390F008458C2 /* Embed App Extensions */ = { 88 | isa = PBXCopyFilesBuildPhase; 89 | buildActionMask = 2147483647; 90 | dstPath = ""; 91 | dstSubfolderSpec = 13; 92 | files = ( 93 | 2218414A206B390F008458C2 /* AireportWidget.appex in Embed App Extensions */, 94 | ); 95 | name = "Embed App Extensions"; 96 | runOnlyForDeploymentPostprocessing = 0; 97 | }; 98 | 22184162206B43E1008458C2 /* Embed Frameworks */ = { 99 | isa = PBXCopyFilesBuildPhase; 100 | buildActionMask = 2147483647; 101 | dstPath = ""; 102 | dstSubfolderSpec = 10; 103 | files = ( 104 | 2218415E206B43E1008458C2 /* AireportKit.framework in Embed Frameworks */, 105 | ); 106 | name = "Embed Frameworks"; 107 | runOnlyForDeploymentPostprocessing = 0; 108 | }; 109 | FF5FEA0A2180C4B100625AA3 /* Embed App Extensions */ = { 110 | isa = PBXCopyFilesBuildPhase; 111 | buildActionMask = 2147483647; 112 | dstPath = ""; 113 | dstSubfolderSpec = 13; 114 | files = ( 115 | FF5FE9F42180C4B000625AA3 /* AireportWC Extension.appex in Embed App Extensions */, 116 | ); 117 | name = "Embed App Extensions"; 118 | runOnlyForDeploymentPostprocessing = 0; 119 | }; 120 | FF5FEA0E2180C4B100625AA3 /* Embed Watch Content */ = { 121 | isa = PBXCopyFilesBuildPhase; 122 | buildActionMask = 2147483647; 123 | dstPath = "$(CONTENTS_FOLDER_PATH)/Watch"; 124 | dstSubfolderSpec = 16; 125 | files = ( 126 | FF5FEA062180C4B100625AA3 /* AireportWC.app in Embed Watch Content */, 127 | ); 128 | name = "Embed Watch Content"; 129 | runOnlyForDeploymentPostprocessing = 0; 130 | }; 131 | FFAAAA9F2180CE0600C922C1 /* Embed Frameworks */ = { 132 | isa = PBXCopyFilesBuildPhase; 133 | buildActionMask = 2147483647; 134 | dstPath = ""; 135 | dstSubfolderSpec = 10; 136 | files = ( 137 | FFAAAAC2218214F600C922C1 /* AireportWCKit.framework in Embed Frameworks */, 138 | ); 139 | name = "Embed Frameworks"; 140 | runOnlyForDeploymentPostprocessing = 0; 141 | }; 142 | /* End PBXCopyFilesBuildPhase section */ 143 | 144 | /* Begin PBXFileReference section */ 145 | 2218413D206B390E008458C2 /* AireportWidget.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = AireportWidget.appex; sourceTree = BUILT_PRODUCTS_DIR; }; 146 | 2218413F206B390E008458C2 /* NotificationCenter.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = NotificationCenter.framework; path = System/Library/Frameworks/NotificationCenter.framework; sourceTree = SDKROOT; }; 147 | 22184142206B390E008458C2 /* TodayViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TodayViewController.swift; sourceTree = ""; }; 148 | 22184145206B390E008458C2 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/MainInterface.storyboard; sourceTree = ""; }; 149 | 22184147206B390F008458C2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 150 | 2218414F206B3B1F008458C2 /* AireportWidget.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = AireportWidget.entitlements; sourceTree = ""; }; 151 | 22184150206B3BE0008458C2 /* Aireport.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Aireport.entitlements; sourceTree = ""; }; 152 | 22184156206B43E1008458C2 /* AireportKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AireportKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 153 | 22184158206B43E1008458C2 /* AireportKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AireportKit.h; sourceTree = ""; }; 154 | 22184159206B43E1008458C2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 155 | 22184167206B6C76008458C2 /* AirTools.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AirTools.swift; sourceTree = ""; }; 156 | 22BC6AEA2068C7F600EC76F3 /* Aireport.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Aireport.app; sourceTree = BUILT_PRODUCTS_DIR; }; 157 | 22BC6AED2068C7F600EC76F3 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 158 | 22BC6AEF2068C7F600EC76F3 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 159 | 22BC6AF22068C7F600EC76F3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 160 | 22BC6AF42068C7F600EC76F3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 161 | 22BC6AF72068C7F600EC76F3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 162 | 22BC6AF92068C7F600EC76F3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 163 | 22BC6AFF2068CA5D00EC76F3 /* AirModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AirModel.swift; sourceTree = ""; }; 164 | 22BC6B012068D1CF00EC76F3 /* AirAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AirAPI.swift; sourceTree = ""; }; 165 | 22BC6B032069E3EA00EC76F3 /* SearchVC.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchVC.swift; sourceTree = ""; }; 166 | 22BC6B082069E85C00EC76F3 /* PlaceModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlaceModel.swift; sourceTree = ""; }; 167 | 22F8D162209173E90009BF29 /* AirNotifiCation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AirNotifiCation.swift; sourceTree = ""; }; 168 | FF5FE9E72180C4AF00625AA3 /* AireportWC.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AireportWC.app; sourceTree = BUILT_PRODUCTS_DIR; }; 169 | FF5FE9EA2180C4AF00625AA3 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Interface.storyboard; sourceTree = ""; }; 170 | FF5FE9EC2180C4B000625AA3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 171 | FF5FE9EE2180C4B000625AA3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 172 | FF5FE9F32180C4B000625AA3 /* AireportWC Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "AireportWC Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; 173 | FF5FE9F82180C4B000625AA3 /* InterfaceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InterfaceController.swift; sourceTree = ""; }; 174 | FF5FE9FA2180C4B000625AA3 /* ExtensionDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExtensionDelegate.swift; sourceTree = ""; }; 175 | FF5FE9FC2180C4B000625AA3 /* NotificationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationController.swift; sourceTree = ""; }; 176 | FF5FE9FE2180C4B000625AA3 /* ComplicationController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ComplicationController.swift; sourceTree = ""; }; 177 | FF5FEA002180C4B100625AA3 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 178 | FF5FEA022180C4B100625AA3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 179 | FF5FEA032180C4B100625AA3 /* PushNotificationPayload.apns */ = {isa = PBXFileReference; lastKnownFileType = text; path = PushNotificationPayload.apns; sourceTree = ""; }; 180 | FFAAAABA218214F600C922C1 /* AireportWCKit.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = AireportWCKit.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 181 | FFAAAABC218214F600C922C1 /* AireportWCKit.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AireportWCKit.h; sourceTree = ""; }; 182 | FFAAAABD218214F600C922C1 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 183 | /* End PBXFileReference section */ 184 | 185 | /* Begin PBXFrameworksBuildPhase section */ 186 | 2218413A206B390E008458C2 /* Frameworks */ = { 187 | isa = PBXFrameworksBuildPhase; 188 | buildActionMask = 2147483647; 189 | files = ( 190 | 22184163206B4407008458C2 /* AireportKit.framework in Frameworks */, 191 | 22184140206B390E008458C2 /* NotificationCenter.framework in Frameworks */, 192 | ); 193 | runOnlyForDeploymentPostprocessing = 0; 194 | }; 195 | 22184152206B43E1008458C2 /* Frameworks */ = { 196 | isa = PBXFrameworksBuildPhase; 197 | buildActionMask = 2147483647; 198 | files = ( 199 | ); 200 | runOnlyForDeploymentPostprocessing = 0; 201 | }; 202 | 22BC6AE72068C7F600EC76F3 /* Frameworks */ = { 203 | isa = PBXFrameworksBuildPhase; 204 | buildActionMask = 2147483647; 205 | files = ( 206 | 2218415D206B43E1008458C2 /* AireportKit.framework in Frameworks */, 207 | ); 208 | runOnlyForDeploymentPostprocessing = 0; 209 | }; 210 | FF5FE9F02180C4B000625AA3 /* Frameworks */ = { 211 | isa = PBXFrameworksBuildPhase; 212 | buildActionMask = 2147483647; 213 | files = ( 214 | FFAAAAC1218214F600C922C1 /* AireportWCKit.framework in Frameworks */, 215 | ); 216 | runOnlyForDeploymentPostprocessing = 0; 217 | }; 218 | FFAAAA822180CBEF00C922C1 /* Frameworks */ = { 219 | isa = PBXFrameworksBuildPhase; 220 | buildActionMask = 2147483647; 221 | files = ( 222 | ); 223 | runOnlyForDeploymentPostprocessing = 0; 224 | }; 225 | FFAAAAB7218214F600C922C1 /* Frameworks */ = { 226 | isa = PBXFrameworksBuildPhase; 227 | buildActionMask = 2147483647; 228 | files = ( 229 | ); 230 | runOnlyForDeploymentPostprocessing = 0; 231 | }; 232 | /* End PBXFrameworksBuildPhase section */ 233 | 234 | /* Begin PBXGroup section */ 235 | 2218413E206B390E008458C2 /* Frameworks */ = { 236 | isa = PBXGroup; 237 | children = ( 238 | 2218413F206B390E008458C2 /* NotificationCenter.framework */, 239 | ); 240 | name = Frameworks; 241 | sourceTree = ""; 242 | }; 243 | 22184141206B390E008458C2 /* AireportWidget */ = { 244 | isa = PBXGroup; 245 | children = ( 246 | 2218414F206B3B1F008458C2 /* AireportWidget.entitlements */, 247 | 22184142206B390E008458C2 /* TodayViewController.swift */, 248 | 22184144206B390E008458C2 /* MainInterface.storyboard */, 249 | 22184147206B390F008458C2 /* Info.plist */, 250 | ); 251 | path = AireportWidget; 252 | sourceTree = ""; 253 | }; 254 | 22184157206B43E1008458C2 /* AireportKit */ = { 255 | isa = PBXGroup; 256 | children = ( 257 | 22BC6B072069E40C00EC76F3 /* API */, 258 | 22BC6B062069E3FB00EC76F3 /* Model */, 259 | 22184158206B43E1008458C2 /* AireportKit.h */, 260 | 22184159206B43E1008458C2 /* Info.plist */, 261 | ); 262 | path = AireportKit; 263 | sourceTree = ""; 264 | }; 265 | 22BC6AE12068C7F600EC76F3 = { 266 | isa = PBXGroup; 267 | children = ( 268 | 22BC6AEC2068C7F600EC76F3 /* Aireport */, 269 | 22184141206B390E008458C2 /* AireportWidget */, 270 | FFAAAABB218214F600C922C1 /* AireportWCKit */, 271 | 22184157206B43E1008458C2 /* AireportKit */, 272 | FF5FE9E82180C4AF00625AA3 /* AireportWC */, 273 | FF5FE9F72180C4B000625AA3 /* AireportWC Extension */, 274 | 2218413E206B390E008458C2 /* Frameworks */, 275 | 22BC6AEB2068C7F600EC76F3 /* Products */, 276 | ); 277 | sourceTree = ""; 278 | }; 279 | 22BC6AEB2068C7F600EC76F3 /* Products */ = { 280 | isa = PBXGroup; 281 | children = ( 282 | 22BC6AEA2068C7F600EC76F3 /* Aireport.app */, 283 | 2218413D206B390E008458C2 /* AireportWidget.appex */, 284 | 22184156206B43E1008458C2 /* AireportKit.framework */, 285 | FF5FE9E72180C4AF00625AA3 /* AireportWC.app */, 286 | FF5FE9F32180C4B000625AA3 /* AireportWC Extension.appex */, 287 | FFAAAABA218214F600C922C1 /* AireportWCKit.framework */, 288 | ); 289 | name = Products; 290 | sourceTree = ""; 291 | }; 292 | 22BC6AEC2068C7F600EC76F3 /* Aireport */ = { 293 | isa = PBXGroup; 294 | children = ( 295 | 22184150206B3BE0008458C2 /* Aireport.entitlements */, 296 | 22BC6B052069E3F100EC76F3 /* VC */, 297 | 22BC6AED2068C7F600EC76F3 /* AppDelegate.swift */, 298 | 22BC6AF42068C7F600EC76F3 /* Assets.xcassets */, 299 | 22BC6AF62068C7F600EC76F3 /* LaunchScreen.storyboard */, 300 | 22BC6AF92068C7F600EC76F3 /* Info.plist */, 301 | ); 302 | path = Aireport; 303 | sourceTree = ""; 304 | }; 305 | 22BC6B052069E3F100EC76F3 /* VC */ = { 306 | isa = PBXGroup; 307 | children = ( 308 | 22BC6AF12068C7F600EC76F3 /* Main.storyboard */, 309 | 22BC6AEF2068C7F600EC76F3 /* ViewController.swift */, 310 | 22BC6B032069E3EA00EC76F3 /* SearchVC.swift */, 311 | ); 312 | path = VC; 313 | sourceTree = ""; 314 | }; 315 | 22BC6B062069E3FB00EC76F3 /* Model */ = { 316 | isa = PBXGroup; 317 | children = ( 318 | 22BC6AFF2068CA5D00EC76F3 /* AirModel.swift */, 319 | 22BC6B082069E85C00EC76F3 /* PlaceModel.swift */, 320 | ); 321 | path = Model; 322 | sourceTree = ""; 323 | }; 324 | 22BC6B072069E40C00EC76F3 /* API */ = { 325 | isa = PBXGroup; 326 | children = ( 327 | 22184167206B6C76008458C2 /* AirTools.swift */, 328 | 22BC6B012068D1CF00EC76F3 /* AirAPI.swift */, 329 | 22F8D162209173E90009BF29 /* AirNotifiCation.swift */, 330 | ); 331 | path = API; 332 | sourceTree = ""; 333 | }; 334 | FF5FE9E82180C4AF00625AA3 /* AireportWC */ = { 335 | isa = PBXGroup; 336 | children = ( 337 | FF5FE9E92180C4AF00625AA3 /* Interface.storyboard */, 338 | FF5FE9EC2180C4B000625AA3 /* Assets.xcassets */, 339 | FF5FE9EE2180C4B000625AA3 /* Info.plist */, 340 | ); 341 | path = AireportWC; 342 | sourceTree = ""; 343 | }; 344 | FF5FE9F72180C4B000625AA3 /* AireportWC Extension */ = { 345 | isa = PBXGroup; 346 | children = ( 347 | FF5FE9F82180C4B000625AA3 /* InterfaceController.swift */, 348 | FF5FE9FA2180C4B000625AA3 /* ExtensionDelegate.swift */, 349 | FF5FE9FC2180C4B000625AA3 /* NotificationController.swift */, 350 | FF5FE9FE2180C4B000625AA3 /* ComplicationController.swift */, 351 | FF5FEA002180C4B100625AA3 /* Assets.xcassets */, 352 | FF5FEA022180C4B100625AA3 /* Info.plist */, 353 | FF5FEA032180C4B100625AA3 /* PushNotificationPayload.apns */, 354 | ); 355 | path = "AireportWC Extension"; 356 | sourceTree = ""; 357 | }; 358 | FFAAAABB218214F600C922C1 /* AireportWCKit */ = { 359 | isa = PBXGroup; 360 | children = ( 361 | FFAAAABC218214F600C922C1 /* AireportWCKit.h */, 362 | FFAAAABD218214F600C922C1 /* Info.plist */, 363 | ); 364 | path = AireportWCKit; 365 | sourceTree = ""; 366 | }; 367 | /* End PBXGroup section */ 368 | 369 | /* Begin PBXHeadersBuildPhase section */ 370 | 22184153206B43E1008458C2 /* Headers */ = { 371 | isa = PBXHeadersBuildPhase; 372 | buildActionMask = 2147483647; 373 | files = ( 374 | 2218415A206B43E1008458C2 /* AireportKit.h in Headers */, 375 | ); 376 | runOnlyForDeploymentPostprocessing = 0; 377 | }; 378 | FFAAAAB5218214F600C922C1 /* Headers */ = { 379 | isa = PBXHeadersBuildPhase; 380 | buildActionMask = 2147483647; 381 | files = ( 382 | FFAAAABE218214F600C922C1 /* AireportWCKit.h in Headers */, 383 | ); 384 | runOnlyForDeploymentPostprocessing = 0; 385 | }; 386 | /* End PBXHeadersBuildPhase section */ 387 | 388 | /* Begin PBXNativeTarget section */ 389 | 2218413C206B390E008458C2 /* AireportWidget */ = { 390 | isa = PBXNativeTarget; 391 | buildConfigurationList = 2218414D206B390F008458C2 /* Build configuration list for PBXNativeTarget "AireportWidget" */; 392 | buildPhases = ( 393 | 22184139206B390E008458C2 /* Sources */, 394 | 2218413A206B390E008458C2 /* Frameworks */, 395 | 2218413B206B390E008458C2 /* Resources */, 396 | ); 397 | buildRules = ( 398 | ); 399 | dependencies = ( 400 | ); 401 | name = AireportWidget; 402 | productName = AireportWidget; 403 | productReference = 2218413D206B390E008458C2 /* AireportWidget.appex */; 404 | productType = "com.apple.product-type.app-extension"; 405 | }; 406 | 22184155206B43E1008458C2 /* AireportKit */ = { 407 | isa = PBXNativeTarget; 408 | buildConfigurationList = 2218415F206B43E1008458C2 /* Build configuration list for PBXNativeTarget "AireportKit" */; 409 | buildPhases = ( 410 | 22184151206B43E1008458C2 /* Sources */, 411 | 22184152206B43E1008458C2 /* Frameworks */, 412 | 22184153206B43E1008458C2 /* Headers */, 413 | 22184154206B43E1008458C2 /* Resources */, 414 | ); 415 | buildRules = ( 416 | ); 417 | dependencies = ( 418 | ); 419 | name = AireportKit; 420 | productName = AireportKit; 421 | productReference = 22184156206B43E1008458C2 /* AireportKit.framework */; 422 | productType = "com.apple.product-type.framework"; 423 | }; 424 | 22BC6AE92068C7F600EC76F3 /* Aireport */ = { 425 | isa = PBXNativeTarget; 426 | buildConfigurationList = 22BC6AFC2068C7F600EC76F3 /* Build configuration list for PBXNativeTarget "Aireport" */; 427 | buildPhases = ( 428 | 22BC6AE62068C7F600EC76F3 /* Sources */, 429 | 22BC6AE72068C7F600EC76F3 /* Frameworks */, 430 | 22BC6AE82068C7F600EC76F3 /* Resources */, 431 | 2218414E206B390F008458C2 /* Embed App Extensions */, 432 | 22184162206B43E1008458C2 /* Embed Frameworks */, 433 | FF5FEA0E2180C4B100625AA3 /* Embed Watch Content */, 434 | ); 435 | buildRules = ( 436 | ); 437 | dependencies = ( 438 | 22184149206B390F008458C2 /* PBXTargetDependency */, 439 | 2218415C206B43E1008458C2 /* PBXTargetDependency */, 440 | FF5FEA052180C4B100625AA3 /* PBXTargetDependency */, 441 | ); 442 | name = Aireport; 443 | productName = Aireport; 444 | productReference = 22BC6AEA2068C7F600EC76F3 /* Aireport.app */; 445 | productType = "com.apple.product-type.application"; 446 | }; 447 | FF5FE9E62180C4AF00625AA3 /* AireportWC */ = { 448 | isa = PBXNativeTarget; 449 | buildConfigurationList = FF5FEA0B2180C4B100625AA3 /* Build configuration list for PBXNativeTarget "AireportWC" */; 450 | buildPhases = ( 451 | FF5FE9E52180C4AF00625AA3 /* Resources */, 452 | FF5FEA0A2180C4B100625AA3 /* Embed App Extensions */, 453 | FFAAAA822180CBEF00C922C1 /* Frameworks */, 454 | ); 455 | buildRules = ( 456 | ); 457 | dependencies = ( 458 | FF5FE9F62180C4B000625AA3 /* PBXTargetDependency */, 459 | ); 460 | name = AireportWC; 461 | productName = AireportWC; 462 | productReference = FF5FE9E72180C4AF00625AA3 /* AireportWC.app */; 463 | productType = "com.apple.product-type.application.watchapp2"; 464 | }; 465 | FF5FE9F22180C4B000625AA3 /* AireportWC Extension */ = { 466 | isa = PBXNativeTarget; 467 | buildConfigurationList = FF5FEA072180C4B100625AA3 /* Build configuration list for PBXNativeTarget "AireportWC Extension" */; 468 | buildPhases = ( 469 | FF5FE9EF2180C4B000625AA3 /* Sources */, 470 | FF5FE9F02180C4B000625AA3 /* Frameworks */, 471 | FF5FE9F12180C4B000625AA3 /* Resources */, 472 | FFAAAA9F2180CE0600C922C1 /* Embed Frameworks */, 473 | ); 474 | buildRules = ( 475 | ); 476 | dependencies = ( 477 | FFAAAAC0218214F600C922C1 /* PBXTargetDependency */, 478 | ); 479 | name = "AireportWC Extension"; 480 | productName = "AireportWC Extension"; 481 | productReference = FF5FE9F32180C4B000625AA3 /* AireportWC Extension.appex */; 482 | productType = "com.apple.product-type.watchkit2-extension"; 483 | }; 484 | FFAAAAB9218214F600C922C1 /* AireportWCKit */ = { 485 | isa = PBXNativeTarget; 486 | buildConfigurationList = FFAAAAC3218214F600C922C1 /* Build configuration list for PBXNativeTarget "AireportWCKit" */; 487 | buildPhases = ( 488 | FFAAAAB5218214F600C922C1 /* Headers */, 489 | FFAAAAB6218214F600C922C1 /* Sources */, 490 | FFAAAAB7218214F600C922C1 /* Frameworks */, 491 | FFAAAAB8218214F600C922C1 /* Resources */, 492 | ); 493 | buildRules = ( 494 | ); 495 | dependencies = ( 496 | ); 497 | name = AireportWCKit; 498 | productName = AireportWCKit; 499 | productReference = FFAAAABA218214F600C922C1 /* AireportWCKit.framework */; 500 | productType = "com.apple.product-type.framework"; 501 | }; 502 | /* End PBXNativeTarget section */ 503 | 504 | /* Begin PBXProject section */ 505 | 22BC6AE22068C7F600EC76F3 /* Project object */ = { 506 | isa = PBXProject; 507 | attributes = { 508 | DefaultBuildSystemTypeForWorkspace = Latest; 509 | LastSwiftUpdateCheck = 1000; 510 | LastUpgradeCheck = 0930; 511 | ORGANIZATIONNAME = ZacJi; 512 | TargetAttributes = { 513 | 2218413C206B390E008458C2 = { 514 | CreatedOnToolsVersion = 9.2; 515 | LastSwiftMigration = 1020; 516 | ProvisioningStyle = Automatic; 517 | SystemCapabilities = { 518 | com.apple.ApplicationGroups.iOS = { 519 | enabled = 1; 520 | }; 521 | }; 522 | }; 523 | 22184155206B43E1008458C2 = { 524 | CreatedOnToolsVersion = 9.2; 525 | LastSwiftMigration = 1020; 526 | ProvisioningStyle = Automatic; 527 | }; 528 | 22BC6AE92068C7F600EC76F3 = { 529 | CreatedOnToolsVersion = 9.2; 530 | LastSwiftMigration = 1020; 531 | ProvisioningStyle = Automatic; 532 | SystemCapabilities = { 533 | com.apple.ApplicationGroups.iOS = { 534 | enabled = 1; 535 | }; 536 | com.apple.BackgroundModes = { 537 | enabled = 1; 538 | }; 539 | }; 540 | }; 541 | FF5FE9E62180C4AF00625AA3 = { 542 | CreatedOnToolsVersion = 10.0; 543 | ProvisioningStyle = Automatic; 544 | }; 545 | FF5FE9F22180C4B000625AA3 = { 546 | CreatedOnToolsVersion = 10.0; 547 | LastSwiftMigration = 1020; 548 | ProvisioningStyle = Automatic; 549 | }; 550 | FFAAAAB9218214F600C922C1 = { 551 | CreatedOnToolsVersion = 10.0; 552 | LastSwiftMigration = 1020; 553 | ProvisioningStyle = Automatic; 554 | }; 555 | }; 556 | }; 557 | buildConfigurationList = 22BC6AE52068C7F600EC76F3 /* Build configuration list for PBXProject "Aireport" */; 558 | compatibilityVersion = "Xcode 8.0"; 559 | developmentRegion = en; 560 | hasScannedForEncodings = 0; 561 | knownRegions = ( 562 | en, 563 | Base, 564 | ); 565 | mainGroup = 22BC6AE12068C7F600EC76F3; 566 | productRefGroup = 22BC6AEB2068C7F600EC76F3 /* Products */; 567 | projectDirPath = ""; 568 | projectRoot = ""; 569 | targets = ( 570 | 22BC6AE92068C7F600EC76F3 /* Aireport */, 571 | 2218413C206B390E008458C2 /* AireportWidget */, 572 | 22184155206B43E1008458C2 /* AireportKit */, 573 | FF5FE9E62180C4AF00625AA3 /* AireportWC */, 574 | FF5FE9F22180C4B000625AA3 /* AireportWC Extension */, 575 | FFAAAAB9218214F600C922C1 /* AireportWCKit */, 576 | ); 577 | }; 578 | /* End PBXProject section */ 579 | 580 | /* Begin PBXResourcesBuildPhase section */ 581 | 2218413B206B390E008458C2 /* Resources */ = { 582 | isa = PBXResourcesBuildPhase; 583 | buildActionMask = 2147483647; 584 | files = ( 585 | 22184146206B390E008458C2 /* MainInterface.storyboard in Resources */, 586 | ); 587 | runOnlyForDeploymentPostprocessing = 0; 588 | }; 589 | 22184154206B43E1008458C2 /* Resources */ = { 590 | isa = PBXResourcesBuildPhase; 591 | buildActionMask = 2147483647; 592 | files = ( 593 | ); 594 | runOnlyForDeploymentPostprocessing = 0; 595 | }; 596 | 22BC6AE82068C7F600EC76F3 /* Resources */ = { 597 | isa = PBXResourcesBuildPhase; 598 | buildActionMask = 2147483647; 599 | files = ( 600 | 22BC6AF82068C7F600EC76F3 /* LaunchScreen.storyboard in Resources */, 601 | FF93CAE6206BCD9500CB2813 /* Assets.xcassets in Resources */, 602 | 22BC6AF32068C7F600EC76F3 /* Main.storyboard in Resources */, 603 | ); 604 | runOnlyForDeploymentPostprocessing = 0; 605 | }; 606 | FF5FE9E52180C4AF00625AA3 /* Resources */ = { 607 | isa = PBXResourcesBuildPhase; 608 | buildActionMask = 2147483647; 609 | files = ( 610 | FF5FE9ED2180C4B000625AA3 /* Assets.xcassets in Resources */, 611 | FF5FE9EB2180C4AF00625AA3 /* Interface.storyboard in Resources */, 612 | ); 613 | runOnlyForDeploymentPostprocessing = 0; 614 | }; 615 | FF5FE9F12180C4B000625AA3 /* Resources */ = { 616 | isa = PBXResourcesBuildPhase; 617 | buildActionMask = 2147483647; 618 | files = ( 619 | FF5FEA012180C4B100625AA3 /* Assets.xcassets in Resources */, 620 | ); 621 | runOnlyForDeploymentPostprocessing = 0; 622 | }; 623 | FFAAAAB8218214F600C922C1 /* Resources */ = { 624 | isa = PBXResourcesBuildPhase; 625 | buildActionMask = 2147483647; 626 | files = ( 627 | ); 628 | runOnlyForDeploymentPostprocessing = 0; 629 | }; 630 | /* End PBXResourcesBuildPhase section */ 631 | 632 | /* Begin PBXSourcesBuildPhase section */ 633 | 22184139206B390E008458C2 /* Sources */ = { 634 | isa = PBXSourcesBuildPhase; 635 | buildActionMask = 2147483647; 636 | files = ( 637 | 22184143206B390E008458C2 /* TodayViewController.swift in Sources */, 638 | ); 639 | runOnlyForDeploymentPostprocessing = 0; 640 | }; 641 | 22184151206B43E1008458C2 /* Sources */ = { 642 | isa = PBXSourcesBuildPhase; 643 | buildActionMask = 2147483647; 644 | files = ( 645 | 22184165206B47CC008458C2 /* AirModel.swift in Sources */, 646 | 22184166206B47D0008458C2 /* PlaceModel.swift in Sources */, 647 | 22184168206B6C76008458C2 /* AirTools.swift in Sources */, 648 | 22184164206B4767008458C2 /* AirAPI.swift in Sources */, 649 | 22F8D163209173E90009BF29 /* AirNotifiCation.swift in Sources */, 650 | ); 651 | runOnlyForDeploymentPostprocessing = 0; 652 | }; 653 | 22BC6AE62068C7F600EC76F3 /* Sources */ = { 654 | isa = PBXSourcesBuildPhase; 655 | buildActionMask = 2147483647; 656 | files = ( 657 | 22BC6AF02068C7F600EC76F3 /* ViewController.swift in Sources */, 658 | 22BC6B042069E3EA00EC76F3 /* SearchVC.swift in Sources */, 659 | 22BC6AEE2068C7F600EC76F3 /* AppDelegate.swift in Sources */, 660 | ); 661 | runOnlyForDeploymentPostprocessing = 0; 662 | }; 663 | FF5FE9EF2180C4B000625AA3 /* Sources */ = { 664 | isa = PBXSourcesBuildPhase; 665 | buildActionMask = 2147483647; 666 | files = ( 667 | FF5FE9FD2180C4B000625AA3 /* NotificationController.swift in Sources */, 668 | FF5FE9FF2180C4B000625AA3 /* ComplicationController.swift in Sources */, 669 | FF5FE9FB2180C4B000625AA3 /* ExtensionDelegate.swift in Sources */, 670 | FF5FE9F92180C4B000625AA3 /* InterfaceController.swift in Sources */, 671 | ); 672 | runOnlyForDeploymentPostprocessing = 0; 673 | }; 674 | FFAAAAB6218214F600C922C1 /* Sources */ = { 675 | isa = PBXSourcesBuildPhase; 676 | buildActionMask = 2147483647; 677 | files = ( 678 | FFAAAAC62182150800C922C1 /* AirTools.swift in Sources */, 679 | FFAAAAC82182150800C922C1 /* AirNotifiCation.swift in Sources */, 680 | FFAAAACA2182150D00C922C1 /* PlaceModel.swift in Sources */, 681 | FFAAAAC92182150D00C922C1 /* AirModel.swift in Sources */, 682 | FFAAAAC72182150800C922C1 /* AirAPI.swift in Sources */, 683 | ); 684 | runOnlyForDeploymentPostprocessing = 0; 685 | }; 686 | /* End PBXSourcesBuildPhase section */ 687 | 688 | /* Begin PBXTargetDependency section */ 689 | 22184149206B390F008458C2 /* PBXTargetDependency */ = { 690 | isa = PBXTargetDependency; 691 | target = 2218413C206B390E008458C2 /* AireportWidget */; 692 | targetProxy = 22184148206B390F008458C2 /* PBXContainerItemProxy */; 693 | }; 694 | 2218415C206B43E1008458C2 /* PBXTargetDependency */ = { 695 | isa = PBXTargetDependency; 696 | target = 22184155206B43E1008458C2 /* AireportKit */; 697 | targetProxy = 2218415B206B43E1008458C2 /* PBXContainerItemProxy */; 698 | }; 699 | FF5FE9F62180C4B000625AA3 /* PBXTargetDependency */ = { 700 | isa = PBXTargetDependency; 701 | target = FF5FE9F22180C4B000625AA3 /* AireportWC Extension */; 702 | targetProxy = FF5FE9F52180C4B000625AA3 /* PBXContainerItemProxy */; 703 | }; 704 | FF5FEA052180C4B100625AA3 /* PBXTargetDependency */ = { 705 | isa = PBXTargetDependency; 706 | target = FF5FE9E62180C4AF00625AA3 /* AireportWC */; 707 | targetProxy = FF5FEA042180C4B100625AA3 /* PBXContainerItemProxy */; 708 | }; 709 | FFAAAAC0218214F600C922C1 /* PBXTargetDependency */ = { 710 | isa = PBXTargetDependency; 711 | target = FFAAAAB9218214F600C922C1 /* AireportWCKit */; 712 | targetProxy = FFAAAABF218214F600C922C1 /* PBXContainerItemProxy */; 713 | }; 714 | /* End PBXTargetDependency section */ 715 | 716 | /* Begin PBXVariantGroup section */ 717 | 22184144206B390E008458C2 /* MainInterface.storyboard */ = { 718 | isa = PBXVariantGroup; 719 | children = ( 720 | 22184145206B390E008458C2 /* Base */, 721 | ); 722 | name = MainInterface.storyboard; 723 | sourceTree = ""; 724 | }; 725 | 22BC6AF12068C7F600EC76F3 /* Main.storyboard */ = { 726 | isa = PBXVariantGroup; 727 | children = ( 728 | 22BC6AF22068C7F600EC76F3 /* Base */, 729 | ); 730 | name = Main.storyboard; 731 | sourceTree = ""; 732 | }; 733 | 22BC6AF62068C7F600EC76F3 /* LaunchScreen.storyboard */ = { 734 | isa = PBXVariantGroup; 735 | children = ( 736 | 22BC6AF72068C7F600EC76F3 /* Base */, 737 | ); 738 | name = LaunchScreen.storyboard; 739 | sourceTree = ""; 740 | }; 741 | FF5FE9E92180C4AF00625AA3 /* Interface.storyboard */ = { 742 | isa = PBXVariantGroup; 743 | children = ( 744 | FF5FE9EA2180C4AF00625AA3 /* Base */, 745 | ); 746 | name = Interface.storyboard; 747 | sourceTree = ""; 748 | }; 749 | /* End PBXVariantGroup section */ 750 | 751 | /* Begin XCBuildConfiguration section */ 752 | 2218414B206B390F008458C2 /* Debug */ = { 753 | isa = XCBuildConfiguration; 754 | buildSettings = { 755 | CODE_SIGN_ENTITLEMENTS = AireportWidget/AireportWidget.entitlements; 756 | CODE_SIGN_STYLE = Automatic; 757 | DEVELOPMENT_TEAM = CR7BE3B56R; 758 | INFOPLIST_FILE = AireportWidget/Info.plist; 759 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 760 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; 761 | PRODUCT_BUNDLE_IDENTIFIER = com.ZacJi.Aireport.AireportWidget; 762 | PRODUCT_NAME = "$(TARGET_NAME)"; 763 | SKIP_INSTALL = YES; 764 | SWIFT_VERSION = 5.0; 765 | TARGETED_DEVICE_FAMILY = "1,2"; 766 | }; 767 | name = Debug; 768 | }; 769 | 2218414C206B390F008458C2 /* Release */ = { 770 | isa = XCBuildConfiguration; 771 | buildSettings = { 772 | CODE_SIGN_ENTITLEMENTS = AireportWidget/AireportWidget.entitlements; 773 | CODE_SIGN_STYLE = Automatic; 774 | DEVELOPMENT_TEAM = CR7BE3B56R; 775 | INFOPLIST_FILE = AireportWidget/Info.plist; 776 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 777 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; 778 | PRODUCT_BUNDLE_IDENTIFIER = com.ZacJi.Aireport.AireportWidget; 779 | PRODUCT_NAME = "$(TARGET_NAME)"; 780 | SKIP_INSTALL = YES; 781 | SWIFT_VERSION = 5.0; 782 | TARGETED_DEVICE_FAMILY = "1,2"; 783 | }; 784 | name = Release; 785 | }; 786 | 22184160206B43E1008458C2 /* Debug */ = { 787 | isa = XCBuildConfiguration; 788 | buildSettings = { 789 | APPLICATION_EXTENSION_API_ONLY = YES; 790 | CODE_SIGN_IDENTITY = ""; 791 | CODE_SIGN_STYLE = Automatic; 792 | CURRENT_PROJECT_VERSION = 1; 793 | DEFINES_MODULE = YES; 794 | DEVELOPMENT_TEAM = CR7BE3B56R; 795 | DYLIB_COMPATIBILITY_VERSION = 1; 796 | DYLIB_CURRENT_VERSION = 1; 797 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 798 | INFOPLIST_FILE = AireportKit/Info.plist; 799 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 800 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 801 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 802 | PRODUCT_BUNDLE_IDENTIFIER = com.ZacJi.AireportKit; 803 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 804 | SKIP_INSTALL = YES; 805 | SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; 806 | SWIFT_VERSION = 5.0; 807 | TARGETED_DEVICE_FAMILY = "1,2"; 808 | VALID_ARCHS = "arm64 armv7 armv7s"; 809 | VERSIONING_SYSTEM = "apple-generic"; 810 | VERSION_INFO_PREFIX = ""; 811 | }; 812 | name = Debug; 813 | }; 814 | 22184161206B43E1008458C2 /* Release */ = { 815 | isa = XCBuildConfiguration; 816 | buildSettings = { 817 | APPLICATION_EXTENSION_API_ONLY = YES; 818 | CODE_SIGN_IDENTITY = ""; 819 | CODE_SIGN_STYLE = Automatic; 820 | CURRENT_PROJECT_VERSION = 1; 821 | DEFINES_MODULE = YES; 822 | DEVELOPMENT_TEAM = CR7BE3B56R; 823 | DYLIB_COMPATIBILITY_VERSION = 1; 824 | DYLIB_CURRENT_VERSION = 1; 825 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 826 | INFOPLIST_FILE = AireportKit/Info.plist; 827 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 828 | IPHONEOS_DEPLOYMENT_TARGET = 11.0; 829 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 830 | PRODUCT_BUNDLE_IDENTIFIER = com.ZacJi.AireportKit; 831 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 832 | SKIP_INSTALL = YES; 833 | SUPPORTED_PLATFORMS = "iphonesimulator iphoneos"; 834 | SWIFT_VERSION = 5.0; 835 | TARGETED_DEVICE_FAMILY = "1,2"; 836 | VALID_ARCHS = "arm64 armv7 armv7s"; 837 | VERSIONING_SYSTEM = "apple-generic"; 838 | VERSION_INFO_PREFIX = ""; 839 | }; 840 | name = Release; 841 | }; 842 | 22BC6AFA2068C7F600EC76F3 /* Debug */ = { 843 | isa = XCBuildConfiguration; 844 | buildSettings = { 845 | ALWAYS_SEARCH_USER_PATHS = NO; 846 | CLANG_ANALYZER_NONNULL = YES; 847 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 848 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 849 | CLANG_CXX_LIBRARY = "libc++"; 850 | CLANG_ENABLE_MODULES = YES; 851 | CLANG_ENABLE_OBJC_ARC = YES; 852 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 853 | CLANG_WARN_BOOL_CONVERSION = YES; 854 | CLANG_WARN_COMMA = YES; 855 | CLANG_WARN_CONSTANT_CONVERSION = YES; 856 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 857 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 858 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 859 | CLANG_WARN_EMPTY_BODY = YES; 860 | CLANG_WARN_ENUM_CONVERSION = YES; 861 | CLANG_WARN_INFINITE_RECURSION = YES; 862 | CLANG_WARN_INT_CONVERSION = YES; 863 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 864 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 865 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 866 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 867 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 868 | CLANG_WARN_STRICT_PROTOTYPES = YES; 869 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 870 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 871 | CLANG_WARN_UNREACHABLE_CODE = YES; 872 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 873 | CODE_SIGN_IDENTITY = "iPhone Developer"; 874 | COPY_PHASE_STRIP = NO; 875 | DEBUG_INFORMATION_FORMAT = dwarf; 876 | ENABLE_STRICT_OBJC_MSGSEND = YES; 877 | ENABLE_TESTABILITY = YES; 878 | GCC_C_LANGUAGE_STANDARD = gnu11; 879 | GCC_DYNAMIC_NO_PIC = NO; 880 | GCC_NO_COMMON_BLOCKS = YES; 881 | GCC_OPTIMIZATION_LEVEL = 0; 882 | GCC_PREPROCESSOR_DEFINITIONS = ( 883 | "DEBUG=1", 884 | "$(inherited)", 885 | ); 886 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 887 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 888 | GCC_WARN_UNDECLARED_SELECTOR = YES; 889 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 890 | GCC_WARN_UNUSED_FUNCTION = YES; 891 | GCC_WARN_UNUSED_VARIABLE = YES; 892 | IPHONEOS_DEPLOYMENT_TARGET = 11.2; 893 | MTL_ENABLE_DEBUG_INFO = YES; 894 | ONLY_ACTIVE_ARCH = YES; 895 | SDKROOT = iphoneos; 896 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 897 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 898 | }; 899 | name = Debug; 900 | }; 901 | 22BC6AFB2068C7F600EC76F3 /* Release */ = { 902 | isa = XCBuildConfiguration; 903 | buildSettings = { 904 | ALWAYS_SEARCH_USER_PATHS = NO; 905 | CLANG_ANALYZER_NONNULL = YES; 906 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 907 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; 908 | CLANG_CXX_LIBRARY = "libc++"; 909 | CLANG_ENABLE_MODULES = YES; 910 | CLANG_ENABLE_OBJC_ARC = YES; 911 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 912 | CLANG_WARN_BOOL_CONVERSION = YES; 913 | CLANG_WARN_COMMA = YES; 914 | CLANG_WARN_CONSTANT_CONVERSION = YES; 915 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 916 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 917 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 918 | CLANG_WARN_EMPTY_BODY = YES; 919 | CLANG_WARN_ENUM_CONVERSION = YES; 920 | CLANG_WARN_INFINITE_RECURSION = YES; 921 | CLANG_WARN_INT_CONVERSION = YES; 922 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 923 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 924 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 925 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 926 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 927 | CLANG_WARN_STRICT_PROTOTYPES = YES; 928 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 929 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 930 | CLANG_WARN_UNREACHABLE_CODE = YES; 931 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 932 | CODE_SIGN_IDENTITY = "iPhone Developer"; 933 | COPY_PHASE_STRIP = NO; 934 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 935 | ENABLE_NS_ASSERTIONS = NO; 936 | ENABLE_STRICT_OBJC_MSGSEND = YES; 937 | GCC_C_LANGUAGE_STANDARD = gnu11; 938 | GCC_NO_COMMON_BLOCKS = YES; 939 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 940 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 941 | GCC_WARN_UNDECLARED_SELECTOR = YES; 942 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 943 | GCC_WARN_UNUSED_FUNCTION = YES; 944 | GCC_WARN_UNUSED_VARIABLE = YES; 945 | IPHONEOS_DEPLOYMENT_TARGET = 11.2; 946 | MTL_ENABLE_DEBUG_INFO = NO; 947 | SDKROOT = iphoneos; 948 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; 949 | VALIDATE_PRODUCT = YES; 950 | }; 951 | name = Release; 952 | }; 953 | 22BC6AFD2068C7F600EC76F3 /* Debug */ = { 954 | isa = XCBuildConfiguration; 955 | buildSettings = { 956 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 957 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 958 | CODE_SIGN_ENTITLEMENTS = Aireport/Aireport.entitlements; 959 | CODE_SIGN_STYLE = Automatic; 960 | DEVELOPMENT_TEAM = CR7BE3B56R; 961 | FRAMEWORK_SEARCH_PATHS = ( 962 | "$(inherited)", 963 | "$(PROJECT_DIR)/Aireport", 964 | ); 965 | INFOPLIST_FILE = Aireport/Info.plist; 966 | IPHONEOS_DEPLOYMENT_TARGET = 12.2; 967 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 968 | OTHER_SWIFT_FLAGS = "-D DEBUG"; 969 | PRODUCT_BUNDLE_IDENTIFIER = com.ZacJi.Aireport; 970 | PRODUCT_NAME = "$(TARGET_NAME)"; 971 | SWIFT_VERSION = 5.0; 972 | TARGETED_DEVICE_FAMILY = "1,2"; 973 | }; 974 | name = Debug; 975 | }; 976 | 22BC6AFE2068C7F600EC76F3 /* Release */ = { 977 | isa = XCBuildConfiguration; 978 | buildSettings = { 979 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 980 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 981 | CODE_SIGN_ENTITLEMENTS = Aireport/Aireport.entitlements; 982 | CODE_SIGN_STYLE = Automatic; 983 | DEVELOPMENT_TEAM = CR7BE3B56R; 984 | FRAMEWORK_SEARCH_PATHS = ( 985 | "$(inherited)", 986 | "$(PROJECT_DIR)/Aireport", 987 | ); 988 | INFOPLIST_FILE = Aireport/Info.plist; 989 | IPHONEOS_DEPLOYMENT_TARGET = 12.2; 990 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 991 | OTHER_SWIFT_FLAGS = ""; 992 | PRODUCT_BUNDLE_IDENTIFIER = com.ZacJi.Aireport; 993 | PRODUCT_NAME = "$(TARGET_NAME)"; 994 | SWIFT_VERSION = 5.0; 995 | TARGETED_DEVICE_FAMILY = "1,2"; 996 | }; 997 | name = Release; 998 | }; 999 | FF5FEA082180C4B100625AA3 /* Debug */ = { 1000 | isa = XCBuildConfiguration; 1001 | buildSettings = { 1002 | ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; 1003 | CLANG_ENABLE_OBJC_WEAK = YES; 1004 | CODE_SIGN_STYLE = Automatic; 1005 | DEVELOPMENT_TEAM = CR7BE3B56R; 1006 | INFOPLIST_FILE = "AireportWC Extension/Info.plist"; 1007 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; 1008 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 1009 | MTL_FAST_MATH = YES; 1010 | PRODUCT_BUNDLE_IDENTIFIER = com.ZacJi.Aireport.watchkitapp.watchkitextension; 1011 | PRODUCT_NAME = "${TARGET_NAME}"; 1012 | SDKROOT = watchos; 1013 | SKIP_INSTALL = YES; 1014 | SWIFT_VERSION = 5.0; 1015 | TARGETED_DEVICE_FAMILY = 4; 1016 | WATCHOS_DEPLOYMENT_TARGET = 5.0; 1017 | }; 1018 | name = Debug; 1019 | }; 1020 | FF5FEA092180C4B100625AA3 /* Release */ = { 1021 | isa = XCBuildConfiguration; 1022 | buildSettings = { 1023 | ASSETCATALOG_COMPILER_COMPLICATION_NAME = Complication; 1024 | CLANG_ENABLE_OBJC_WEAK = YES; 1025 | CODE_SIGN_STYLE = Automatic; 1026 | DEVELOPMENT_TEAM = CR7BE3B56R; 1027 | INFOPLIST_FILE = "AireportWC Extension/Info.plist"; 1028 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks"; 1029 | MTL_FAST_MATH = YES; 1030 | PRODUCT_BUNDLE_IDENTIFIER = com.ZacJi.Aireport.watchkitapp.watchkitextension; 1031 | PRODUCT_NAME = "${TARGET_NAME}"; 1032 | SDKROOT = watchos; 1033 | SKIP_INSTALL = YES; 1034 | SWIFT_VERSION = 5.0; 1035 | TARGETED_DEVICE_FAMILY = 4; 1036 | WATCHOS_DEPLOYMENT_TARGET = 5.0; 1037 | }; 1038 | name = Release; 1039 | }; 1040 | FF5FEA0C2180C4B100625AA3 /* Debug */ = { 1041 | isa = XCBuildConfiguration; 1042 | buildSettings = { 1043 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 1044 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1045 | CLANG_ENABLE_OBJC_WEAK = YES; 1046 | CODE_SIGN_STYLE = Automatic; 1047 | DEVELOPMENT_TEAM = CR7BE3B56R; 1048 | IBSC_MODULE = AireportWC_Extension; 1049 | INFOPLIST_FILE = AireportWC/Info.plist; 1050 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1051 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 1052 | MTL_FAST_MATH = YES; 1053 | PRODUCT_BUNDLE_IDENTIFIER = com.ZacJi.Aireport.watchkitapp; 1054 | PRODUCT_NAME = "$(TARGET_NAME)"; 1055 | SDKROOT = watchos; 1056 | SKIP_INSTALL = YES; 1057 | SWIFT_VERSION = 4.2; 1058 | TARGETED_DEVICE_FAMILY = 4; 1059 | WATCHOS_DEPLOYMENT_TARGET = 5.0; 1060 | }; 1061 | name = Debug; 1062 | }; 1063 | FF5FEA0D2180C4B100625AA3 /* Release */ = { 1064 | isa = XCBuildConfiguration; 1065 | buildSettings = { 1066 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 1067 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 1068 | CLANG_ENABLE_OBJC_WEAK = YES; 1069 | CODE_SIGN_STYLE = Automatic; 1070 | DEVELOPMENT_TEAM = CR7BE3B56R; 1071 | IBSC_MODULE = AireportWC_Extension; 1072 | INFOPLIST_FILE = AireportWC/Info.plist; 1073 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; 1074 | MTL_FAST_MATH = YES; 1075 | PRODUCT_BUNDLE_IDENTIFIER = com.ZacJi.Aireport.watchkitapp; 1076 | PRODUCT_NAME = "$(TARGET_NAME)"; 1077 | SDKROOT = watchos; 1078 | SKIP_INSTALL = YES; 1079 | SWIFT_VERSION = 4.2; 1080 | TARGETED_DEVICE_FAMILY = 4; 1081 | WATCHOS_DEPLOYMENT_TARGET = 5.0; 1082 | }; 1083 | name = Release; 1084 | }; 1085 | FFAAAAC4218214F600C922C1 /* Debug */ = { 1086 | isa = XCBuildConfiguration; 1087 | buildSettings = { 1088 | APPLICATION_EXTENSION_API_ONLY = YES; 1089 | CLANG_ENABLE_OBJC_WEAK = YES; 1090 | CODE_SIGN_IDENTITY = ""; 1091 | CODE_SIGN_STYLE = Automatic; 1092 | CURRENT_PROJECT_VERSION = 1; 1093 | DEFINES_MODULE = YES; 1094 | DEVELOPMENT_TEAM = CR7BE3B56R; 1095 | DYLIB_COMPATIBILITY_VERSION = 1; 1096 | DYLIB_CURRENT_VERSION = 1; 1097 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 1098 | INFOPLIST_FILE = AireportWCKit/Info.plist; 1099 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 1100 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1101 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 1102 | MTL_FAST_MATH = YES; 1103 | PRODUCT_BUNDLE_IDENTIFIER = Zac.AireportWCKit; 1104 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 1105 | SDKROOT = watchos; 1106 | SKIP_INSTALL = YES; 1107 | SWIFT_VERSION = 5.0; 1108 | TARGETED_DEVICE_FAMILY = 4; 1109 | VERSIONING_SYSTEM = "apple-generic"; 1110 | VERSION_INFO_PREFIX = ""; 1111 | WATCHOS_DEPLOYMENT_TARGET = 5.0; 1112 | }; 1113 | name = Debug; 1114 | }; 1115 | FFAAAAC5218214F600C922C1 /* Release */ = { 1116 | isa = XCBuildConfiguration; 1117 | buildSettings = { 1118 | APPLICATION_EXTENSION_API_ONLY = YES; 1119 | CLANG_ENABLE_OBJC_WEAK = YES; 1120 | CODE_SIGN_IDENTITY = ""; 1121 | CODE_SIGN_STYLE = Automatic; 1122 | CURRENT_PROJECT_VERSION = 1; 1123 | DEFINES_MODULE = YES; 1124 | DEVELOPMENT_TEAM = CR7BE3B56R; 1125 | DYLIB_COMPATIBILITY_VERSION = 1; 1126 | DYLIB_CURRENT_VERSION = 1; 1127 | DYLIB_INSTALL_NAME_BASE = "@rpath"; 1128 | INFOPLIST_FILE = AireportWCKit/Info.plist; 1129 | INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; 1130 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; 1131 | MTL_FAST_MATH = YES; 1132 | PRODUCT_BUNDLE_IDENTIFIER = Zac.AireportWCKit; 1133 | PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; 1134 | SDKROOT = watchos; 1135 | SKIP_INSTALL = YES; 1136 | SWIFT_VERSION = 5.0; 1137 | TARGETED_DEVICE_FAMILY = 4; 1138 | VERSIONING_SYSTEM = "apple-generic"; 1139 | VERSION_INFO_PREFIX = ""; 1140 | WATCHOS_DEPLOYMENT_TARGET = 5.0; 1141 | }; 1142 | name = Release; 1143 | }; 1144 | /* End XCBuildConfiguration section */ 1145 | 1146 | /* Begin XCConfigurationList section */ 1147 | 2218414D206B390F008458C2 /* Build configuration list for PBXNativeTarget "AireportWidget" */ = { 1148 | isa = XCConfigurationList; 1149 | buildConfigurations = ( 1150 | 2218414B206B390F008458C2 /* Debug */, 1151 | 2218414C206B390F008458C2 /* Release */, 1152 | ); 1153 | defaultConfigurationIsVisible = 0; 1154 | defaultConfigurationName = Release; 1155 | }; 1156 | 2218415F206B43E1008458C2 /* Build configuration list for PBXNativeTarget "AireportKit" */ = { 1157 | isa = XCConfigurationList; 1158 | buildConfigurations = ( 1159 | 22184160206B43E1008458C2 /* Debug */, 1160 | 22184161206B43E1008458C2 /* Release */, 1161 | ); 1162 | defaultConfigurationIsVisible = 0; 1163 | defaultConfigurationName = Release; 1164 | }; 1165 | 22BC6AE52068C7F600EC76F3 /* Build configuration list for PBXProject "Aireport" */ = { 1166 | isa = XCConfigurationList; 1167 | buildConfigurations = ( 1168 | 22BC6AFA2068C7F600EC76F3 /* Debug */, 1169 | 22BC6AFB2068C7F600EC76F3 /* Release */, 1170 | ); 1171 | defaultConfigurationIsVisible = 0; 1172 | defaultConfigurationName = Release; 1173 | }; 1174 | 22BC6AFC2068C7F600EC76F3 /* Build configuration list for PBXNativeTarget "Aireport" */ = { 1175 | isa = XCConfigurationList; 1176 | buildConfigurations = ( 1177 | 22BC6AFD2068C7F600EC76F3 /* Debug */, 1178 | 22BC6AFE2068C7F600EC76F3 /* Release */, 1179 | ); 1180 | defaultConfigurationIsVisible = 0; 1181 | defaultConfigurationName = Release; 1182 | }; 1183 | FF5FEA072180C4B100625AA3 /* Build configuration list for PBXNativeTarget "AireportWC Extension" */ = { 1184 | isa = XCConfigurationList; 1185 | buildConfigurations = ( 1186 | FF5FEA082180C4B100625AA3 /* Debug */, 1187 | FF5FEA092180C4B100625AA3 /* Release */, 1188 | ); 1189 | defaultConfigurationIsVisible = 0; 1190 | defaultConfigurationName = Release; 1191 | }; 1192 | FF5FEA0B2180C4B100625AA3 /* Build configuration list for PBXNativeTarget "AireportWC" */ = { 1193 | isa = XCConfigurationList; 1194 | buildConfigurations = ( 1195 | FF5FEA0C2180C4B100625AA3 /* Debug */, 1196 | FF5FEA0D2180C4B100625AA3 /* Release */, 1197 | ); 1198 | defaultConfigurationIsVisible = 0; 1199 | defaultConfigurationName = Release; 1200 | }; 1201 | FFAAAAC3218214F600C922C1 /* Build configuration list for PBXNativeTarget "AireportWCKit" */ = { 1202 | isa = XCConfigurationList; 1203 | buildConfigurations = ( 1204 | FFAAAAC4218214F600C922C1 /* Debug */, 1205 | FFAAAAC5218214F600C922C1 /* Release */, 1206 | ); 1207 | defaultConfigurationIsVisible = 0; 1208 | defaultConfigurationName = Release; 1209 | }; 1210 | /* End XCConfigurationList section */ 1211 | }; 1212 | rootObject = 22BC6AE22068C7F600EC76F3 /* Project object */; 1213 | } 1214 | --------------------------------------------------------------------------------