如何通过UIActivityViewController共享多个URL?

时间:2015-02-13 16:11:25

标签: ios objective-c cocoa-touch uikit uiactivityviewcontroller

这是我的代码:

 NSArray* itemsToShare = [self itemsToShare:items]; // array of NSURLs

if (itemsToShare.count)
{
    UIActivityViewController* activityVC = [[UIActivityViewController alloc] initWithActivityItems:itemsToShare applicationActivities:nil];
    UIViewController*         controller = self.platformManager.sharePanel.navigationController.topViewController;
    [controller presentViewController:activityVC animated:YES completion:nil];
}

如果itemsToShare.count大于1 UIActivityViewController则不会显示Facebook和Twitter图标。如果阵列充满图像,它可以正常工作。有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您无法改变标准的Facebook和Twitter共享扩展程序。现在iOS 8允许我们进行自定义扩展,我们可以看到这些扩展可以自行决定他们可以处理哪些项目。

Apple的扩展程序设计指南讨论了扩展程序如何指定它可以处理的项目。见Declaring Supported Data Types for a Share or Action Extension

  

例如,声明您的共享扩展程序最多可以支持   你可以使用10个图像,一个电影和一个网页URL   跟随字典获取NSExtensionAttributes键的值:

<key>NSExtensionAttributes</key>
    <dict>
        <key>NSExtensionActivationRule</key>
        <dict>
            <key>NSExtensionActivationSupportsImageWithMaxCount</key>
            <integer>10</integer>
            <key>NSExtensionActivationSupportsMovieWithMaxCount</key>
            <integer>1</integer>
            <key>NSExtensionActivationSupportsWebURLWithMaxCount</key>
            <integer>1</integer>
        </dict>
    </dict>

所以,这里可能发生的事情是,Facebook和Twitter扩展指定他们可以处理多个图像,但只能处理一个网址,就像上面Apple的例子一样。

由于您无法更改Facebook或Twitter扩展程序,因此您需要创建自己的机制,以便一次发布多个指向Facebook的链接。或者考虑它是否真的对用户一次发布多个链接非常有用,而不是像单独发布它们一样,这是典型的预期用例。