标签: uiactivityviewcontroller

UIActivityViewController,如何为活动项分配名称

我有一些 NSData,可以使用 UIActivityViewController 成功添加到电子邮件中,如下所示:

    NSData *pDFdada = [NSData dataWithContentsOfFile:path];
    NSArray* dataToShare = @[pDFdada];
    UIActivityViewController* activityViewController =  [[UIActivityViewController alloc] initWithActivityItems: dataToShare applicationActivities:nil];
Run Code Online (Sandbox Code Playgroud)

现在该 pdf 已共享,但使用通用名称“Attachment-1”。我想给它一个自定义名称,例如“myNewFile.pdf”。这可能吗?

cocoa-touch nsdata uiactivityviewcontroller

5
推荐指数
0
解决办法
241
查看次数

如何与 UIActivityViewController 共享文本文件

我尝试共享文件内容的 NSData 对象,活动视图中出现邮件选项,然后显示邮件撰写控制器,但没有附件。

我尝试过与文件路径共享 NSUrl,但在这种情况下,当活动视图出现时,它会占据整个屏幕,但除了底部的“取消”按钮之外,它是空白的。诡异的。此外,在这种情况下,活动视图仅出现在设备上,它甚至从未出现在模拟器上。

如果我将 NSData 转换为 NSString,那么它确实可以工作,但它只是将字符串粘贴到电子邮件正文中。我不想这样,我想附加一个文件。

我使用调试器来验证 NSData 对象是否具有(正确的)数据以及 NSUrl 对象是否具有正确的文件路径。没有骰子。

        var documents = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
        var file = Path.Combine(documents, "file.txt");
        NSData dataToShare = NSFileManager.DefaultManager.Contents(file);

        UIActivityViewController activityViewController = new UIActivityViewController(new NSObject[] { dataToShare }, null); //Email comes up but data isn't attached

        // OR

        UIActivityViewController activityViewController = new UIActivityViewController(new NSObject[] { new NSUrl(file) }, null); //Activity view takes up the whole screen and is blank

        // OR

        UIActivityViewController activityViewController = new UIActivityViewController(new NSObject[] { (NSString)dataToShare.ToString() }, null); //Pastes …
Run Code Online (Sandbox Code Playgroud)

xamarin.ios ios xamarin uiactivityviewcontroller

5
推荐指数
0
解决办法
1757
查看次数

通过 ActivityViewController iOS swift 共享应用程序链接?

我的应用程序还没有上线。我从App Store Connect. 我想在社交媒体应用上分享应用链接。我使用了UIActivityViewController

let string1 = "itms-apps://itunes.apple.com/app/idXXXXXXX"
let url = NSURL(string: string1)

let shareItems = [UIApplication.sharedApplication().openURL(url!)]
    
let activityViewController = UIActivityViewController(activityItems: shareItems, applicationActivities: nil)
self.presentViewController(activityViewController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

问题:它没有显示一些社交媒体应用程序,如 WhatsApp。

在此处输入图片说明

ios uiactivityviewcontroller swift

5
推荐指数
3
解决办法
2万
查看次数

更改 UIActivityViewController 中 UIBarButtonItems 的色调颜色

我有一个导航栏,在深色背景颜色上使用白色色调。我用来UIActivityViewController分享 iOS 分享表的链接。

当我选择 WhatsApp 或消息应用程序共享内容时,导航按钮具有默认的蓝色色调。此外,搜索栏(以 WhatsApp 为例)具有灰色色调,这确实使其难以阅读。

我无法更改色调颜色。我的代码:

let textToShare = "Visit my website!"
if let myWebsite = NSURL(string: "http://google.com") {
    let objectsToShare = [textToShare, myWebsite]
    let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)

    self.presentViewController(activityVC, animated: true, completion: {
        activityVC.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
        activityVC.navigationController?.navigationItem.rightBarButtonItem?.tintColor = UIColor.whiteColor()   
        activityVC.navigationController?.navigationItem.leftBarButtonItem?.tintColor = UIColor.whiteColor()
    })
}
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

编辑:

这不是重复的问题,因为它与活动视图控制器的按钮色调颜色无关。它与视图控制器的导航控制器的按钮颜色有关,例如按下 iMessage 上的共享后显示的按钮颜色。

ios uiactivityviewcontroller swift

5
推荐指数
1
解决办法
2036
查看次数

使用 UIActivityViewController 将 PNG 图像共享到 Facebook Messenger 总是失败

这是一个具有专业知识的专家的问题。

可以PNGUIActivityViewController许多共享平台成功共享高质量的无损图像,但每次都失败的 Facebook Messenger 除外。提供的错误是“Couldn’t Load Content”

UIImagePNGRepresentation NSDataAnyObject失败中的Facebook Messenger中,UIImage成功然而股BUT的输出图象似乎是一个JPG和低质量和有损耗的。

题:

这里发生了什么以及如何纠正——我如何成功地与UIActivityViewControllerFacebook Messenger共享高质量的无损 PNG 图像?

这是 Facebook Messenger、Xcode 或UIActivityViewController?

NSDataAnyObject(和 UIImage)有替代品吗?

代码:

var myImage: UIImage! 
var myImagePNG: NSData! 
//var myImagePNG: AnyObject!

func sharePNG() { …
    myImagePNG = UIImagePNGRepresentation(myImage)!
    let activity = UIActivityViewController(activityItems: [myImagePNG], applicationActivities: nil)
    self.presentViewController(activity, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

图片:

在此处输入图片说明

xcode ios messenger uiactivityviewcontroller swift

5
推荐指数
1
解决办法
1049
查看次数

如何在 iOS 11 中禁用“保存到文件”?

我有一个 iOS 应用程序,它创建一个 PDF 并使用 UIActivityViewController 使用默认共享功能进行共享。我不得不阻止一些共享设施,如 Vimeo、Facebook、Twillio 等,而且文件不应存储在设备上。

在新的 iOS 11 版本中,Apple 提供了带有默认共享功能的 SaveToFiles 选项。我尝试使用excludedActivityTypes,并阻止“com.apple.CloudDocsUI.AddToiCloudDrive”选项,但没有成功。

谁能帮我通过 Swift 禁用 SaveToFile 选项?我正在使用 Xcode 9.3 和 Swift 4。

uiactivityviewcontroller swift ios11 xcode9.3

5
推荐指数
1
解决办法
2402
查看次数

在 Swift 4 中使用 UIActivityViewController 共享 pdf 文件

我正在使用 UIActivityViewController 来共享一个 PDF 文件:

let pdfFilePath = URL(string: "https://www.tutorialspoint.com/swift/swift_tutorial.pdf")
let pdfData = NSData(contentsOf: pdfFilePath!)
let activityVC = UIActivityViewController(activityItems: [pdfData!], applicationActivities: nil)

present(activityVC, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

显示以下结果:

在此处输入图片说明

我想要的是显示更多功能,例如“复制到书籍”和“添加到笔记”,如下所示:

在此处输入图片说明

ios uiactivityviewcontroller swift

5
推荐指数
1
解决办法
2772
查看次数

如何知道用户是否分享了我的应用?

我的应用就是拿积分赢钱,我需要做的就是让用户分享我的应用,然后给他一些积分。

问题是我不知道如何检测用户是否真正共享了该应用程序

我正在使用以下代码:

func shareTapped(){
    let text = "example"
    let url = URL(string: "example.com")
    let image = UIImage(named: "example_image")
    let shareViewController = UIActivityViewController(activityItems: [text, image!, url!] ,applicationActivities: nil)
    self.present(shareViewController, animated: true, completion: {() in
        print("done")
    })
}
Run Code Online (Sandbox Code Playgroud)

共享方法运行良好,但我想知道在这种情况下我们是否可以调用任何委托。

谢谢。

ios uiactivityviewcontroller swift

5
推荐指数
1
解决办法
631
查看次数

使用较小的 UIImage 为 UIActivityViewController 设置缩略图

我想设置一个特定的较小缩略图,但仍为我正在共享的活动项目使用高质量图像。我的问题是在共享大图像时,缩略图需要时间来生成,这在将其共享给某些应用程序时可能会导致问题。

例如,如果我展示我的 UIActivity 控制器,并选择 Messenger,

在此处输入图片说明

我没有时间让我的缩略图加载,选择一个人并点击发送,它永远不会完成发送,我需要取消。

在此处输入图片说明

只有当我等待缩略图生成,然后点击发送,一切才会正常。

在此处输入图片说明

在这种情况下,“照片”是高质量的 UIImage,但是如何设置缩略图以避免在 UIActivityViewController 出现时从高质量图像中生成一张呢?

let activity = UIActivityViewController(activityItems: [photo], applicationActivities: nil)

UIApplication.topViewController?.present(activity, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

有一个关于缩略图的文档,但我不确定如何实现它,或者在这种情况下它是否有帮助:https : //developer.apple.com/documentation/uikit/uiactivityitemsource/1620462-activityviewcontroller

另外,我阅读了 UIActivityItemProvider,它指出:

例如,您可以使用 provider 对象来表示需要处理的大型视频文件,然后才能将其共享到用户的社交媒体帐户。

这是否意味着它可以推迟显示我想与之共享图像的应用程序,直到它准备好?我继承了 UIActivityItemProvider,并传递了一个缩略图,但它似乎没有任何效果。我要么做错了什么,要么这不是我想要使用的。

我的子类 UIActivityItemProvider:

class CustomProvider : UIActivityItemProvider {

    var image : UIImage!

    init(placeholderItem: AnyObject, image : UIImage) {
        super.init(placeholderItem: placeholderItem)
        self.image = image
    }

    override var item: Any {
        return self.image!
    }
}
Run Code Online (Sandbox Code Playgroud)

我有一个共享功能,它是一个扩展。我创建了一个缩略图图像并将其传递给 CustomProvider 函数中的 placeholderItem:

extension Equatable {
    func share() {

        let imageData = (self …
Run Code Online (Sandbox Code Playgroud)

sharing thumbnails uiimage uiactivityviewcontroller swift

5
推荐指数
1
解决办法
2306
查看次数

iOS 13 共享表:更改副标题/项目描述

新的 iOS 13 共享表提供了一个很好的标题,显示了正在共享的项目的上下文。

在此处输入图片说明

我一直无法弄清楚如何更改项目描述。我使用了 activityViewControllerLinkMetadata 函数,它部分地给了我我需要的东西(更改标题和图标),但是负责显示项目描述的 originalURL 只接受 URL,如果我们从字符串创建 URL,则必须对每个字符串进行转义(空间到 %20,例如)。

@available(iOS 13.0, *)
        func activityViewControllerLinkMetadata(_: UIActivityViewController) -> LPLinkMetadata? {
            let metadata = LPLinkMetadata()
            metadata.title = song.title

            if let data = song.artistNames.data(using: .utf8) {
                let url = URL(dataRepresentation: data, relativeTo: nil)

                metadata.originalURL = URL(dataRepresentation: data, relativeTo: nil)

                if let image = image {
                    metadata.iconProvider = NSItemProvider(object: image)
                }
            }
            return metadata
        }
Run Code Online (Sandbox Code Playgroud)

App Store 和音乐应用程序可以做到这一点 - 有没有人想到这一点?

ios uiactivityviewcontroller ios-sharesheet ios13

5
推荐指数
1
解决办法
652
查看次数