if let destination = trip.destination { attributes.contentDescription = "View details for your trip to \(destination)" } attributes.thumbnailData = UIImage(named: "trip")?.pngData() userActivity.contentAttributeSet = attributes
if let destination = trip.destination { attributes.contentDescription = "View details for your trip to \(destination)" } attributes.thumbnailData = UIImage(named: "trip")?.pngData() userActivity.contentAttributeSet = attributes
if let destination = trip.destination { attributes.contentDescription = "View details for your trip to \(destination)" } attributes.thumbnailData = UIImage(named: "trip")?.pngData() userActivity.contentAttributeSet = attributes
if let destination = trip.destination { attributes.contentDescription = "View details for your trip to \(destination)" } attributes.thumbnailData = UIImage(named: "trip")?.pngData() userActivity.contentAttributeSet = attributes
if let destination = trip.destination { attributes.contentDescription = "View details for your trip to \(destination)" } // TODO: Y U NO WORK?! attributes.thumbnailData = UIImage(named: "trip")?.pngData() userActivity.contentAttributeSet = attributes
if let destination = trip.destination { attributes.contentDescription = "View details for your trip to \(destination)" } // TODO: Y U NO WORK?! attributes.thumbnailData = UIImage(named: "trip")?.pngData() userActivity.contentAttributeSet = attributes
Optional! public func confirm(intent: EditTripIntent, completion: @escaping (EditTriptIntentResponse) -> Void) { // Figure out if the thing can be done } public func handle(intent: EditTripIntent, completion: @escaping (EditTripIntentResponse) -> Void) { // Do the thing! completion(.success) } }
Optional! public func confirm(intent: EditTripIntent, completion: @escaping (EditTriptIntentResponse) -> Void) { // Figure out if the thing can be done } public func handle(intent: EditTripIntent, completion: @escaping (EditTripIntentResponse) -> Void) { // Do the thing! completion(.success) } }
Optional! public func confirm(intent: EditTripIntent, completion: @escaping (EditTriptIntentResponse) -> Void) { // Figure out if the thing can be done } public func handle(intent: EditTripIntent, completion: @escaping (EditTripIntentResponse) -> Void) { // Do the thing! completion(.success) } }
Optional! public func confirm(intent: EditTripIntent, completion: @escaping (EditTriptIntentResponse) -> Void) { // Figure out if the thing can be done } public func handle(intent: EditTripIntent, completion: @escaping (EditTripIntentResponse) -> Void) { // Do the thing! completion(.success(name: name, destination: destination)) } }
for automation > your shortcuts are a bit more limited > Use NSUserActivity for basic action shortcuts > Use Custom Intents for more involved shortcuts
for automation > your shortcuts are a bit more limited > Use NSUserActivity for basic action shortcuts > Use Custom Intents for more involved shortcuts > Keep titles and suggested invocation phrases short
for automation > your shortcuts are a bit more limited > Use NSUserActivity for basic action shortcuts > Use Custom Intents for more involved shortcuts > Keep titles and suggested invocation phrases short > Responses + Intent Extension + Intent UI = users
for automation > Use NSUserActivity for basic action shortcuts > Use Custom Intents for more involved shortcuts > Keep titles and suggested invocation phrases short > Use custom responses to handle errors more clearly
Watch Face https://developer.apple.com/videos/play/ wwdc2018/217/ > Session 404: New Localization Workflows in Xcode 10 https://developer.apple.com/videos/play/ wwdc2018/404/