UIActivityController для совместного использования файла URL

#ios #swift #swift3 #xcode8 #uiactivityviewcontroller

#iOS #swift #swift3 #xcode8 #uiactivityviewcontroller

Вопрос:

Я хочу поделиться файлом URL, который был создан в приложении, и текстом. Но, похоже, он может обмениваться только текстом, а не какими-либо данными, такими как URL или UIImage . Код, который я использую:

 let sharedVideo = Video(Title: _data[1], VideoID: _data[0], Duration: _data[3], ViewCount: _data[2])
let  sharedURL = VideoManager.exportData(video: sharedVideo)
let shareItems:Array = [sharedURL,"check this out baby!"] as [Any]

let activityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil)

self.present(activityViewController, animated: true, completion: nil)
  

Также я использую UIImage объект вместо sharedURL, чтобы посмотреть, есть ли у него проблемы с URL или нет.

Это не работает даже с файлом изображения. Когда я нажимаю на кнопку «Поделиться» внутри UIActivityViewController , это работает только для текста, без URL-адреса или изображения. Я использую Swift 3 в Xcode 8.

Спасибо.

PS: Я уверен в отношении объекта sharedURL, что он не равен нулю и не определен.

Комментарии:

1. вы хотите поделиться URL-адресом или текстом в социальных сетях и своем приложении?

2. @seggy Я хочу поделиться текстом с URL-адресом в социальных приложениях, а также отправить его другим пользователям устройств iOS. Спасибо

3. о, чем вы можете следить за ответом @Sanjeet verma

Ответ №1:

Попробуйте это:

  @IBAction func btnExport(sender: AnyObject)
{

     let someText:String = "Hello want to share text also"
    let objectsToShare:URL = URL(string: "http://www.google.com")!
    let sharedObjects:[AnyObject] = [objectsToShare as AnyObject,someText as AnyObject]
    let activityViewController = UIActivityViewController(activityItems : sharedObjects, applicationActivities: nil)
    activityViewController.popoverPresentationController?.sourceView = self.view

    activityViewController.excludedActivityTypes = [ UIActivityType.airDrop, UIActivityType.postToFacebook,UIActivityType.postToTwitter,UIActivityType.mail]

    self.present(activityViewController, animated: true, completion: nil)

}
  

Комментарии:

1. Сначала я попробовал код, который вы используете image для совместного использования, и он отлично работает. Теперь я собираюсь попробовать ваш отредактированный код, чтобы посмотреть, работает ли он для URL или нет. Большое вам спасибо.

2. @BehdadAhmadi я рад помочь вам, если мой ответ приемлем, тогда поддержите меня.

3. Спасибо, приятель, твой ответ работает, но снова сбой с моим собственным настроенным URL. Мой URL состоит из NSDictionary, который содержит 4 строки, 1 строку в кодировке base64 и объект данных. Я думаю, что что-то не так с моим настроенным URL. Однако спасибо, что уделили мне свое время.

4. @BehdadAhmadi Счастливого кодирования:)

5. Большое вам спасибо!

Ответ №2:

Упрощенное решение, работающее с Swift 5

 let url = URL(string: shareUrlString)!
let text = "Some text that you want shared"
let activity = UIActivityViewController(activityItems: [url, text], applicationActivities: nil)
present(activity, animated: true)