【问题标题】:Understanding Which Activity Gets Called in Sharing SwiftUI了解共享 SwiftUI 时调用了哪个 Activity
【发布时间】:2021-04-16 05:57:19
【问题描述】:

在我的分享表上,我看到了这些活动,但我想了解并获取选择了哪个活动来分享网址。

例如,如果选择了 WhatsApp,我想以某种方式获取 WhatsApp selected bool。

    struct ShareSheet: UIViewControllerRepresentable {
    typealias Callback = (_ activityType: UIActivity.ActivityType?, _ completed: Bool, _ returnedItems: [Any]?, _ error: Error?) -> Void
    
    let activityItems: [Any]
    let applicationActivities: [UIActivity]? = nil
    let excludedActivityTypes: [UIActivity.ActivityType]? = nil
    let callback: Callback? = nil
    
    func makeUIViewController(context: Context) -> UIActivityViewController {
        let controller = UIActivityViewController(
            activityItems: activityItems,
            applicationActivities: applicationActivities)
        controller.excludedActivityTypes = excludedActivityTypes
        controller.completionWithItemsHandler = callback
        return controller
    }
    
    func updateUIViewController(_ uiViewController: UIActivityViewController, context: Context) {
        // nothing to do here
    }
}

我正在尝试的是

 func fetchActivity() {
    if activityItems.description == "whatsapp" {
        self.service.articleShare(article_id: articlePost.article_id, share_type: "whatsapp")
    }
}

【问题讨论】:

标签: swiftui uiactivity


【解决方案1】:
    struct ShareSheet: UIViewControllerRepresentable {
    @ObservedObject var service = ArticleService()
    var articlePost: Article
    typealias Callback = (_ activityType: UIActivity.ActivityType?, _ completed: Bool, _ returnedItems: [Any]?, _ error: Error?) -> Void
    
    let activityItems: [Any]
    let applicationActivities: [UIActivity]? = nil
    let excludedActivityTypes: [UIActivity.ActivityType]? = nil
    let callback: Callback? = nil
    func makeUIViewController(context: Context) -> UIActivityViewController {
        let controller = UIActivityViewController(
            activityItems: activityItems,
            applicationActivities: applicationActivities)
        controller.excludedActivityTypes = excludedActivityTypes
        controller.completionWithItemsHandler = callback
        controller.completionWithItemsHandler = { activity, success, items, error in
            if !success{
                print("cancelled")
                return
            }
            if activity == UIActivity.ActivityType.postToTwitter {
                print("twitter")
                print(articlePost.article_id)
                self.service.articleShare(article_id: articlePost.article_id, share_type: "twitter")
            }
            if activity == UIActivity.ActivityType.postToFacebook {
                print("facebook")
                self.service.articleShare(article_id: articlePost.article_id, share_type: "facebook")
            }
            if activity == UIActivity.ActivityType.mail {
                print("mail")
                print(articlePost.article_id)
                self.service.articleShare(article_id: articlePost.article_id, share_type: "mail")
            }
            if activity == UIActivity.ActivityType.message {
            }
        }
        return controller
    }
    
    func updateUIViewController(_ uiViewController: UIActivityViewController, context: Context) {
        // nothing to do here
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-29
    • 2018-05-14
    • 1970-01-01
    • 2018-06-01
    • 2016-10-23
    • 2020-06-05
    • 2021-09-15
    相关资源
    最近更新 更多