Skip to content

Instantly share code, notes, and snippets.

@alexruperez
Last active May 6, 2021 00:47
Show Gist options
  • Select an option

  • Save alexruperez/ea81aa3e371f7d0d7ea5e594d7e9ad08 to your computer and use it in GitHub Desktop.

Select an option

Save alexruperez/ea81aa3e371f7d0d7ea5e594d7e9ad08 to your computer and use it in GitHub Desktop.

Revisions

  1. alexruperez revised this gist Sep 13, 2018. 1 changed file with 2 additions and 0 deletions.
    2 changes: 2 additions & 0 deletions UIResponder+UserActivity.swift
    Original file line number Diff line number Diff line change
    @@ -61,7 +61,9 @@ public extension UIResponder {
    if #available(iOS 12.0, *) {
    userActivity.isEligibleForPrediction = prediction
    userActivity.persistentIdentifier = persistentIdentifier ?? activityType
    #if swift(>=4.2)
    userActivity.suggestedInvocationPhrase = suggestedInvocationPhrase
    #endif
    }
    if let mapItem = mapItem {
    userActivity.mapItem = mapItem
  2. alexruperez revised this gist Sep 13, 2018. No changes.
  3. alexruperez revised this gist Sep 13, 2018. No changes.
  4. alexruperez revised this gist Sep 13, 2018. 1 changed file with 3 additions and 3 deletions.
    6 changes: 3 additions & 3 deletions UIResponder+UserActivity.swift
    Original file line number Diff line number Diff line change
    @@ -19,7 +19,7 @@ public extension UIResponder {
    referrerURL: URL? = nil,
    expiration: Date? = nil,
    displayName: String? = nil,
    keywords: Set<String>? = nil,
    keywords: Set<String> = Set<String>(),
    continuationStreams: Bool = false,
    delegate: NSUserActivityDelegate? = nil,
    becomeCurrent: Bool = true,
    @@ -37,7 +37,7 @@ public extension UIResponder {
    attributeSet.contentDescription = contentDescription
    attributeSet.thumbnailData = thumbnailData
    attributeSet.displayName = displayName ?? title
    attributeSet.keywords = Array(keywords ?? [])
    attributeSet.keywords = Array(keywords)
    userActivity.contentAttributeSet = attributeSet
    userActivity.contentAttributeSet?.supportsNavigation = NSNumber(value: supportsNavigation)
    userActivity.contentAttributeSet?.supportsPhoneCall = NSNumber(value: supportsPhoneCall)
    @@ -52,7 +52,7 @@ public extension UIResponder {
    if let expiration = expiration {
    userActivity.expirationDate = expiration
    }
    userActivity.keywords = keywords ?? []
    userActivity.keywords = keywords
    userActivity.supportsContinuationStreams = continuationStreams
    userActivity.delegate = delegate
    userActivity.isEligibleForSearch = search
  5. alexruperez revised this gist Sep 13, 2018. No changes.
  6. alexruperez revised this gist Sep 13, 2018. 1 changed file with 24 additions and 13 deletions.
    37 changes: 24 additions & 13 deletions UIResponder+UserActivity.swift
    Original file line number Diff line number Diff line change
    @@ -9,33 +9,41 @@ import MapKit
    public extension UIResponder {

    @discardableResult public func setUserActivity(_ activityType: String,
    title: String? = nil,
    userInfo: [AnyHashable : Any]? = nil,
    requiredKeys: Set<String>? = nil,
    title: String,
    contentDescription: String? = nil,
    thumbnailData: Data? = nil,
    userInfo: [AnyHashable : Any] = [:],
    requiredKeys: Set<String> = Set<String>(),
    needsSave: Bool = false,
    webpageURL: URL? = nil,
    referrerURL: URL? = nil,
    expiration: Date? = nil,
    displayName: String? = nil,
    keywords: Set<String>? = nil,
    continuationStreams: Bool = false,
    delegate: NSUserActivityDelegate? = nil,
    becomeCurrent: Bool = false,
    becomeCurrent: Bool = true,
    search: Bool = true,
    handoff: Bool = false,
    publicIndexing: Bool = false,
    handoff: Bool = true,
    publicIndexing: Bool = true,
    prediction: Bool = true,
    persistentIdentifier: String? = nil,
    suggestedInvocationPhrase: String? = nil,
    mapItem: MKMapItem? = nil,
    attributeSet: CSSearchableItemAttributeSet? = nil,
    attributeSet: CSSearchableItemAttributeSet = CSSearchableItemAttributeSet(itemContentType: kUTTypeItem as String),
    supportsNavigation: Bool = true,
    supportsPhoneCall: Bool = true) -> NSUserActivity {
    let userActivity = NSUserActivity(activityType: activityType)
    attributeSet.contentDescription = contentDescription
    attributeSet.thumbnailData = thumbnailData
    attributeSet.displayName = displayName ?? title
    attributeSet.keywords = Array(keywords ?? [])
    userActivity.contentAttributeSet = attributeSet
    userActivity.contentAttributeSet?.supportsNavigation = NSNumber(value: supportsNavigation)
    userActivity.contentAttributeSet?.supportsPhoneCall = NSNumber(value: supportsPhoneCall)
    userActivity.title = title
    userActivity.userInfo = userInfo
    if let requiredKeys = requiredKeys {
    userActivity.requiredUserInfoKeys = requiredKeys
    }
    userActivity.requiredUserInfoKeys = requiredKeys
    userActivity.needsSave = needsSave
    userActivity.webpageURL = webpageURL
    if #available(iOS 11.0, *) {
    @@ -44,14 +52,17 @@ public extension UIResponder {
    if let expiration = expiration {
    userActivity.expirationDate = expiration
    }
    if let keywords = keywords {
    userActivity.keywords = keywords
    }
    userActivity.keywords = keywords ?? []
    userActivity.supportsContinuationStreams = continuationStreams
    userActivity.delegate = delegate
    userActivity.isEligibleForSearch = search
    userActivity.isEligibleForHandoff = handoff
    userActivity.isEligibleForPublicIndexing = publicIndexing
    if #available(iOS 12.0, *) {
    userActivity.isEligibleForPrediction = prediction
    userActivity.persistentIdentifier = persistentIdentifier ?? activityType
    userActivity.suggestedInvocationPhrase = suggestedInvocationPhrase
    }
    if let mapItem = mapItem {
    userActivity.mapItem = mapItem
    }
  7. alexruperez revised this gist Jun 14, 2018. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion UIResponder+UserActivity.swift
    Original file line number Diff line number Diff line change
    @@ -19,7 +19,7 @@ public extension UIResponder {
    keywords: Set<String>? = nil,
    continuationStreams: Bool = false,
    delegate: NSUserActivityDelegate? = nil,
    becomeCurrent: Bool = true,
    becomeCurrent: Bool = false,
    search: Bool = true,
    handoff: Bool = false,
    publicIndexing: Bool = false,
  8. alexruperez revised this gist Jun 14, 2018. 1 changed file with 6 additions and 2 deletions.
    8 changes: 6 additions & 2 deletions UIResponder+UserActivity.swift
    Original file line number Diff line number Diff line change
    @@ -24,8 +24,13 @@ public extension UIResponder {
    handoff: Bool = false,
    publicIndexing: Bool = false,
    mapItem: MKMapItem? = nil,
    attributeSet: CSSearchableItemAttributeSet? = nil) -> NSUserActivity {
    attributeSet: CSSearchableItemAttributeSet? = nil,
    supportsNavigation: Bool = true,
    supportsPhoneCall: Bool = true) -> NSUserActivity {
    let userActivity = NSUserActivity(activityType: activityType)
    userActivity.contentAttributeSet = attributeSet
    userActivity.contentAttributeSet?.supportsNavigation = NSNumber(value: supportsNavigation)
    userActivity.contentAttributeSet?.supportsPhoneCall = NSNumber(value: supportsPhoneCall)
    userActivity.title = title
    userActivity.userInfo = userInfo
    if let requiredKeys = requiredKeys {
    @@ -50,7 +55,6 @@ public extension UIResponder {
    if let mapItem = mapItem {
    userActivity.mapItem = mapItem
    }
    userActivity.contentAttributeSet = attributeSet
    self.userActivity = userActivity
    if becomeCurrent {
    userActivity.becomeCurrent()
  9. alexruperez revised this gist Jun 14, 2018. 1 changed file with 15 additions and 4 deletions.
    19 changes: 15 additions & 4 deletions UIResponder+UserActivity.swift
    Original file line number Diff line number Diff line change
    @@ -4,6 +4,7 @@

    import UIKit
    import CoreSpotlight
    import MapKit

    public extension UIResponder {

    @@ -15,30 +16,40 @@ public extension UIResponder {
    webpageURL: URL? = nil,
    referrerURL: URL? = nil,
    expiration: Date? = nil,
    keywords: Set<String> = Set<String>(),
    keywords: Set<String>? = nil,
    continuationStreams: Bool = false,
    delegate: NSUserActivityDelegate? = nil,
    becomeCurrent: Bool = true,
    search: Bool = true,
    handoff: Bool = false,
    publicIndexing: Bool = false,
    mapItem: MKMapItem? = nil,
    attributeSet: CSSearchableItemAttributeSet? = nil) -> NSUserActivity {
    let userActivity = NSUserActivity(activityType: activityType)
    userActivity.title = title
    userActivity.userInfo = userInfo
    userActivity.requiredUserInfoKeys = requiredKeys
    if let requiredKeys = requiredKeys {
    userActivity.requiredUserInfoKeys = requiredKeys
    }
    userActivity.needsSave = needsSave
    userActivity.webpageURL = webpageURL
    if #available(iOS 11.0, *) {
    userActivity.referrerURL = referrerURL
    }
    userActivity.expirationDate = expiration
    userActivity.keywords = keywords
    if let expiration = expiration {
    userActivity.expirationDate = expiration
    }
    if let keywords = keywords {
    userActivity.keywords = keywords
    }
    userActivity.supportsContinuationStreams = continuationStreams
    userActivity.delegate = delegate
    userActivity.isEligibleForSearch = search
    userActivity.isEligibleForHandoff = handoff
    userActivity.isEligibleForPublicIndexing = publicIndexing
    if let mapItem = mapItem {
    userActivity.mapItem = mapItem
    }
    userActivity.contentAttributeSet = attributeSet
    self.userActivity = userActivity
    if becomeCurrent {
  10. alexruperez created this gist Jun 13, 2018.
    50 changes: 50 additions & 0 deletions UIResponder+UserActivity.swift
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,50 @@
    //
    // UIResponder+UserActivity.swift
    //

    import UIKit
    import CoreSpotlight

    public extension UIResponder {

    @discardableResult public func setUserActivity(_ activityType: String,
    title: String? = nil,
    userInfo: [AnyHashable : Any]? = nil,
    requiredKeys: Set<String>? = nil,
    needsSave: Bool = false,
    webpageURL: URL? = nil,
    referrerURL: URL? = nil,
    expiration: Date? = nil,
    keywords: Set<String> = Set<String>(),
    continuationStreams: Bool = false,
    delegate: NSUserActivityDelegate? = nil,
    becomeCurrent: Bool = true,
    search: Bool = true,
    handoff: Bool = false,
    publicIndexing: Bool = false,
    attributeSet: CSSearchableItemAttributeSet? = nil) -> NSUserActivity {
    let userActivity = NSUserActivity(activityType: activityType)
    userActivity.title = title
    userActivity.userInfo = userInfo
    userActivity.requiredUserInfoKeys = requiredKeys
    userActivity.needsSave = needsSave
    userActivity.webpageURL = webpageURL
    if #available(iOS 11.0, *) {
    userActivity.referrerURL = referrerURL
    }
    userActivity.expirationDate = expiration
    userActivity.keywords = keywords
    userActivity.supportsContinuationStreams = continuationStreams
    userActivity.delegate = delegate
    userActivity.isEligibleForSearch = search
    userActivity.isEligibleForHandoff = handoff
    userActivity.isEligibleForPublicIndexing = publicIndexing
    userActivity.contentAttributeSet = attributeSet
    self.userActivity = userActivity
    if becomeCurrent {
    userActivity.becomeCurrent()
    }
    return userActivity
    }

    }