javascript - 有没有办法共享特定的应用程序 ios?

标签 javascript ios reactjs react-native

我正在使用 React Native 共享表。目前,它显示一行符合条件的应用程序可以共享。但是,我希望它一次只显示一个应用程序。也就是说,当我分享到 snapchat 时,让它只显示 snapchat,这样用户就不必在“更多”中查找它。

我知道有一种方法可以排除特定应用 ( https://developer.apple.com/documentation/uikit/uiactivity/activitytype ):

onClick() {
  Share.share({
    message: 'BAM: we\'re helping your business with awesome React Native apps',
    url: 'http://bam.tech',
    title: 'Wow, did you see that?'
  }, {
    // Android only:
    dialogTitle: 'Share BAM goodness',
    // iOS only:
    excludedActivityTypes: [
      'com.apple.UIKit.activity.PostToTwitter'
    ]
  })
}

但我不知道我想要排除的所有应用程序的 uiactivitytype 签名(如果您知道,请告诉),而且将所有内容列入黑名单比仅将 snapchat 列入白名单更困难。

有办法做到这一点吗?也许与 includedActivityTypes 一起使用?

最佳答案

这是我的列表:

let vc = UIActivityViewController(activityItems: [shareImage], applicationActivities: [])
vc.excludedActivityTypes =  [
    //UIActivity.ActivityType.postToTwitter,
    //UIActivity.ActivityType.postToFacebook,
    UIActivity.ActivityType.postToWeibo,
    //UIActivity.ActivityType.message,
    //UIActivity.ActivityType.mail,
    //UIActivity.ActivityType.print,
    //UIActivity.ActivityType.copyToPasteboard,
    UIActivity.ActivityType.assignToContact,
    //UIActivity.ActivityType.saveToCameraRoll,
    UIActivity.ActivityType.addToReadingList,
    //UIActivity.ActivityType.PostToFlickr,
    UIActivity.ActivityType.postToVimeo,
    UIActivity.ActivityType.postToTencentWeibo,
    //UIActivity.ActivityType.airDrop,
    UIActivity.ActivityType.openInIBooks,
    UIActivity.ActivityType.markupAsPDF
]

抱歉,脑子转储了,但在几乎任何版本的 Xcode(以下是 12.3 版本)中,您都可以深入研究,UIActivity.ActivityType 会产生:

extension UIActivity.ActivityType {

    @available(iOS 6.0, *)
    public static let postToFacebook: UIActivity.ActivityType

    @available(iOS 6.0, *)
    public static let postToTwitter: UIActivity.ActivityType

    @available(iOS 6.0, *)
    public static let postToWeibo: UIActivity.ActivityType

    @available(iOS 6.0, *)
    public static let message: UIActivity.ActivityType

    @available(iOS 6.0, *)
    public static let mail: UIActivity.ActivityType

    @available(iOS 6.0, *)
    public static let print: UIActivity.ActivityType

    @available(iOS 6.0, *)
    public static let copyToPasteboard: UIActivity.ActivityType

    @available(iOS 6.0, *)
    public static let assignToContact: UIActivity.ActivityType

    @available(iOS 6.0, *)
    public static let saveToCameraRoll: UIActivity.ActivityType

    @available(iOS 7.0, *)
    public static let addToReadingList: UIActivity.ActivityType

    @available(iOS 7.0, *)
    public static let postToFlickr: UIActivity.ActivityType

    @available(iOS 7.0, *)
    public static let postToVimeo: UIActivity.ActivityType

    @available(iOS 7.0, *)
    public static let postToTencentWeibo: UIActivity.ActivityType

    @available(iOS 7.0, *)
    public static let airDrop: UIActivity.ActivityType

    @available(iOS 9.0, *)
    public static let openInIBooks: UIActivity.ActivityType

    @available(iOS 11.0, *)
    public static let markupAsPDF: UIActivity.ActivityType
}

我想这就是你想要的。一如既往,寻找 iOS 版本的变化。 (我倾向于检查每个 iOS 版本,但你永远不知道。)此外,请记住,可以使用共享表来完成自定义。

最后,请注意,它黑名单。就是这样。

编辑:

我能够调出我的列表,因为这就是它在我的应用程序中的编码方式。保留已定义类型的完整列表要容易得多,包括那些未列入黑名单以供将来使用的类型!

关于javascript - 有没有办法共享特定的应用程序 ios?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65525994/

相关文章:

ios - SJPhysics 关节 Spring 频率和 Swift 中的阻尼

javascript - NDEFReader 未定义

javascript - 是否有一个 React 生命周期方法仅在组件第一次接收到 props 时才执行某些操作?

javascript - 从试图多次获取相同数据的 JavaScript 函数获取 NaN

javascript - 使用 onclick - jquery 在循环中按 ID 删除元素

javascript - X 轴上的 Highcharts 系列名称

javascript - React Native 中组件之间的通信(子 -> 父)

在 iOS 上调用 "TypeError: Load Failed"时出现 Javascript "fetch"错误

javascript - 谁能告诉我为什么我无法从待办事项列表中删除项目?

javascript - Switch Case 在 IE 中抛出错误