miscellaneous topics - washington state universityholder/courses/mad/slides/99-misc.pdf · outline...
TRANSCRIPT
![Page 1: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/1.jpg)
Miscellaneous TopicsMobile Application Development in iOS
School of EECS
Washington State University
Instructor: Larry Holder
Mobile Application Development in iOS 1
![Page 2: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/2.jpg)
Outline
• Access app info
• Rename app and Xcode project
• Add app icons (updated 1/17/20)
• Package management with CocoaPods (updated 3/13/20)
– Example: Debugging with Crashlytics
• Detect if running in iOS simulator
• HomeKit
Mobile Application Development in iOS 2
![Page 3: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/3.jpg)
Access App Info
Mobile Application Development in iOS 3
![Page 4: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/4.jpg)
Access App Info.plist
Mobile Application Development in iOS 4
![Page 5: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/5.jpg)
Access App Info.plist
Mobile Application Development in iOS 5
// Get app namelet appName = Bundle.main.object(forInfoDictionaryKey:
"CFBundleName") as! String
// Get app versionlet appVersion = Bundle.main.object(forInfoDictionaryKey:
"CFBundleShortVersionString") as! String
// Get app buildlet appBuild = Bundle.main.object(forInfoDictionaryKey:
"CFBundleVersion") as! String
![Page 6: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/6.jpg)
Rename App andXcode Project
Mobile Application Development in iOS 6
![Page 7: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/7.jpg)
Rename App Display Name
• Add "Bundle display name" key to Info.plist
Mobile Application Development in iOS 7
![Page 8: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/8.jpg)
Rename Xcode Project
• Step 1: Change project name in upper left of
file hierarchy
– Rename project content items
Mobile Application Development in iOS 8
![Page 9: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/9.jpg)
Rename Xcode Project
• Step 2: Rename scheme
Mobile Application Development in iOS 9
![Page 10: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/10.jpg)
Renaming Xcode Project
• Step 3: Change bundle identifier
Mobile Application Development in iOS 10
![Page 11: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/11.jpg)
Renaming Xcode Project
• Step 4: Change top-level folder/file names
Mobile Application Development in iOS 11
Change app name in code comments
![Page 12: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/12.jpg)
Renaming Xcode Project
• Step 5: Change Info.plist file in build settings
Mobile Application Development in iOS 12
Done!
![Page 13: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/13.jpg)
Add App Icons
Mobile Application Development in iOS 13
![Page 14: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/14.jpg)
Add App Icons
Mobile Application Development in iOS 14
![Page 15: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/15.jpg)
Add App Icons
Mobile Application Development in iOS 15
![Page 16: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/16.jpg)
Add App Icons
• Create main high-resolution icon
• Use app icon service to generate different
resolutions
– E.g., www.makeappicon.com
• Drag and drop into AppIcon assets
Mobile Application Development in iOS 16
![Page 17: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/17.jpg)
Add App Icons
Mobile Application Development in iOS 17
![Page 18: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/18.jpg)
Add App Icons
Mobile Application Development in iOS 18
![Page 19: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/19.jpg)
Package Management with CocoaPods
Mobile Application Development in iOS 19
![Page 20: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/20.jpg)
Package Management with CocoaPods
• https://cocoapods.org
• MacOS installation (using Ruby)
– sudo gem install cocoapods
• Create Podfile in top-level app directory
– pod init
• Add pods to Podfile
• Install dependencies
– pod install
• Open .xcworkspace version of project
Mobile Application Development in iOS 20
![Page 21: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/21.jpg)
CocoaPods Example: Crashlytics
• How to know when your deployed app
crashes?
• https://firebase.google.com/docs/crashlytics
• Free for small deployments
Mobile Application Development in iOS 21
![Page 22: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/22.jpg)
Firebase Console
• console.firebase.google.com
• Add project
• Add Firebase to your iOS app
Mobile Application Development in iOS 22
![Page 23: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/23.jpg)
Podfile Example: Crashlytics
Mobile Application Development in iOS 23
# Podfile
target 'CrashApp' douse_frameworks!
pod 'Fabric'pod 'Crashlytics'pod 'Firebase/Analytics'
end
> pod install...[!] Please close any current Xcode sessions and use ‘CrashApp.xcworkspace’ for this project from now on.
> pod init
![Page 24: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/24.jpg)
CocoaPods
• Import Firebase and initialization in AppDelegate
Mobile Application Development in iOS 24
![Page 25: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/25.jpg)
Crashlytics Extra Steps (1)
• Add a Run Script Build Phase
Mobile Application Development in iOS 25
![Page 26: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/26.jpg)
Crashlytics Extra Steps (2)
• Collect symbols
Mobile Application Development in iOS 26
![Page 27: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/27.jpg)
Crashlytics Example
• Add code to crash the app
– Can collect various information
Mobile Application Development in iOS 27
import Crashlytics
@IBAction func crashMeTapped(_ sender: UIButton) {
// Store some user infoCrashlytics.sharedInstance().setUserIdentifier("Larry")
// Crash the appCrashlytics.sharedInstance().crash()
}
![Page 28: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/28.jpg)
Crashlytics Example
• Crash the app
– Run app from Xcode to install on simulator/device
– Run app without Xcode directly on simulator/device
– Crash the app
• Crashlytics.sharedInstance().crash()
– Run app again from Xcode (sends crash report)
– View on Firebase Crashlytics dashboard
Mobile Application Development in iOS 28
![Page 29: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/29.jpg)
Crashlytics Example
Mobile Application Development in iOS 29
![Page 30: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/30.jpg)
Other Crash Tools
• Xcode (iOS)
– Once app on App Store
or Test Flight
Mobile Application Development in iOS 30
![Page 31: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/31.jpg)
Other Package Management Tools
• Carthage
– https://github.com/Carthage/Carthage
– Similar to CocoaPods, but decentralized
• Swift Package Manager
– https://swift.org/package-manager/
Mobile Application Development in iOS 31
![Page 32: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/32.jpg)
Detecting if Running iniOS Simulator
Mobile Application Development in iOS 32
![Page 33: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/33.jpg)
Create Swift Flag in Build Settings
Mobile Application Development in iOS 33
![Page 34: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/34.jpg)
Extend UIDevice Class
Mobile Application Development in iOS 34
extension UIDevice {var isSimulator: Bool {
#if IOS_SIMULATOR // flag defined in build settingsreturn true
#elsereturn false
#endif}
}
// Usageif (UIDevice.current.isSimulator) {
// Do this if app running in simulator} else {
// Do this is app running on device}
![Page 35: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/35.jpg)
HomeKit
Mobile Application Development in iOS 35
![Page 36: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/36.jpg)
HomeKit
• Framework for monitoring and control of
connected accessories in user’s home
Mobile Application Development in iOS 36
![Page 37: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/37.jpg)
HomeKit
• Add HomeKit to app’s Capabilities
– Requires developer account
• Requires description for why app needs access
to HomeKit
Mobile Application Development in iOS 37
![Page 38: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/38.jpg)
Home Layout• Use HMHome class to create home layout
• Each home consists of rooms (HMRoom)
• Each room consists of accessories (HMAccessory)
– E.g., lamp
• Each accessory provides one or more services (HMService)
– E.g., turn lamp on or off
• Each service can have one or morecharacteristics (HMCharacteristic)
– E.g., on/off status of lamp
• Rooms can be grouped into zones (HMZone)
Mobile Application Development in iOS 38
![Page 39: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/39.jpg)
Accessory Types
• Predefined services and characteristics for common accessories
– Light and power
– Air, temperature, humidity and water
– Locks, safety and security
– Cameras and sound
• Other accessory types possible
– Defined by the manufacturer of the accessory
– Accessory must include HomeKit-compatible hardware
• Complies with “Made For iOS” (MFi) program
Mobile Application Development in iOS 39
![Page 40: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/40.jpg)
Events and Triggers• Events
– Location events
– Time events
– Characteristic events
– Presence events
• Trigger
– Predicate that determines if trigger should fire
– Scene (array of Events) executed when predicate is true
Mobile Application Development in iOS 40
E.g., “When the front door is opened,turn on the hallway light.”
![Page 41: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/41.jpg)
Home Manager
• HMHomeManager
Mobile Application Development in iOS 41
![Page 42: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/42.jpg)
Home Manager Delegate
• HMHomeManagerDelegate
– homeManagerDidUpdateHomes
– homeManagerDidUpdatePrimaryHome
– didAdd (home)
– didRemove (home)
Mobile Application Development in iOS 42
![Page 43: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/43.jpg)
HomeKit Initialization
Mobile Application Development in iOS 43
import HomeKit
class ViewController: UIViewController, HMHomeManagerDelegate {var homeManager = HMHomeManager()
override func viewDidLoad() {super.viewDidLoad()homeManager.delegate = self
}
// Called after initial fetch of home data, or any changesfunc homeManagerDidUpdateHomes(_ manager: HMHomeManager) {
if (homeManager.homes.isEmpty) {print("no homes")
} else {for home in homeManager.homes {
print("Found home: \(home.name)")}
}}
![Page 44: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/44.jpg)
Testing HomeKit App
• HomeKit Accessory Simulator
– Don’t need an actual HomeKit accessory to test
– Download by clicking on “Download HomeKit
Simulator” in Capabilities pane
• Find latest version of “Hardware IO Tools for Xcode”
• Install simulator in Applications folder
Mobile Application Development in iOS 44
![Page 45: Miscellaneous Topics - Washington State Universityholder/courses/MAD/slides/99-Misc.pdf · Outline •Access app info •Rename app and Xcode project •Add app icons (updated 1/17/20)](https://reader034.vdocuments.site/reader034/viewer/2022042220/5ec5fd8f4f8ce2596d27b553/html5/thumbnails/45.jpg)
Resources
• developer.apple.com/homekit/
• HomeKit Developer Guide
– developer.apple.com/library/content/documentati
on/NetworkingInternet/Conceptual/HomeKitDeve
loperGuide
Mobile Application Development in iOS 45