标签: uiactivityviewcontroller

iOS 6 - UIActivityViewController项目

希望每个人都知道iOS 6中包含的新风格ActionSheet (UIActivityViewController).UIActivityViewController都可以用类似的字符串,网址,图像等paramentes启动下面是该代码段(其中的项目是用绳子和网址参数的数组).

UIActivityViewController *activityVC = [[UIActivityViewController alloc] initWithActivityItems:items applicationActivities:nil];
Run Code Online (Sandbox Code Playgroud)

但是,当我们选择不同的分享选项(如Mail,Facebook或Twitter)时,我们是否可以分配不同的参数?

一种方法是我们可以实现UIActivityItemSource,我们需要在其中实现源方法

- (id)activityViewController:(UIActivityViewController *)activityViewController itemForActivityType:(NSString *)activityType
Run Code Online (Sandbox Code Playgroud)

它总是返回一个字符串值.但我需要传递一个数组,以便我可以分配各种参数,如URL,图像和标题.

知道如何实现这一目标吗?

objective-c ios ios6 uiactivityviewcontroller

6
推荐指数
1
解决办法
2万
查看次数

UIActivityViewController混合文本和图像并保持顺序

是否可以混合图像和文本并将其作为彩信发送?UIActivityViewController将与下方的文本共享图像,但无论我如何订购文本和图像,图像始终显示在顶部,文本显示在底部.如果不可能UIActivityViewController,还有另外一种方法吗?

我正在尝试使用的代码:

NSArray *activityItems = @[smallImage, @"Love", mediumImage, @"You", largeImage];
NSArray *applicationActivities = nil;
NSArray *excludeActivities = nil;

UIActivityViewController * activityController = [[UIActivityViewController alloc] initWithActivityItems:activityItems applicationActivities:applicationActivities];

activityController.excludedActivityTypes = excludeActivities;

[self presentViewController:activityController animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

它产生了这个结果: 结果产生了

但这就是我想要的: 我想要的是

sms mms ios uiactivityviewcontroller

6
推荐指数
0
解决办法
765
查看次数

共享UIImage到UIActivityViewController Twitter/Facebook显示对话非常慢

我有一张从相机中取出的图像并保存到/ tmp文件夹中.

当我将此图像添加到UIActivityViewController的activityItems,然后按下与Twitter或Facebook共享时,我必须等待最多20秒才能显示共享对话框.

请注意,我指的是为Twitter/Facebook显示的实际"发布"对话框,而不是生成它的本机共享弹出窗口.

当我从照片应用程序共享相同的图像时,它会立即显示.

起初我认为照片应用程序正在调整图像大小,因为较小的图像显得更快,但我发现当我使用SLComposeViewController直接将相同的图像分享到Twitter或Facebook时,它(几乎)立即出现.

假设我在代码中做错了,这就是导致冰冷的对话框出现的原因:

NSArray *items = @[@"foo", [UIImage imageWithContentsOfFile:@"valid path to test image"]];

UIActivityViewController *vc = [[UIActivityViewController alloc]
        initWithActivityItems:items applicationActivities:nil];
[self presentViewController:vc animated:YES completion:nil];
Run Code Online (Sandbox Code Playgroud)

这几乎是立即起作用的:

SLComposeViewController *controller = [SLComposeViewController composeViewControllerForServiceType:SLServiceTypeTwitter];
[controller setInitialText:@"foo"];
[controller addImage:[UIImage imageWithContentsOfFile:@"valid path to test image"]];
[self presentViewController:controller animated:YES completion:Nil];
Run Code Online (Sandbox Code Playgroud)

为了它的价值,我也尝试排除其他共享类型(我读过去AirDrop引起的问题),以及包装块以确保我在主线程上执行.

我想我做错了什么?

如果我不是,并且这两个其他方法实际上正在调整图像大小,是否有一些我缺少的文档提供了关于调整大小的指导?

**编辑:额外的测试似乎表明这个问题是iOS8独有的,因为我没有在较旧的iOS7设备上体验过它.

谢谢

objective-c ios slcomposeviewcontroller uiactivityviewcontroller

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

插件com.linkedin.LinkedIn.ShareExtension在IOS中断

我正在使用UIActivityViewController来共享文本并链接到Linkedin.我收到了错误:

plugin com.linkedin.LinkedIn.ShareExtension interrupted
plugin com.linkedin.LinkedIn.ShareExtension invalidated
Run Code Online (Sandbox Code Playgroud)

我在ios设备上安装了Linkedin app.我该如何解决?

linkedin ios uiactivityviewcontroller

6
推荐指数
0
解决办法
290
查看次数

使用UIActivityViewController将SMS发送到特定的电话号码

我正在使用UIActivityViewController邀请联系人到我的应用程序.我只需要分享一个特定的文字.它适用于所有共享选项,但是当我尝试发送SMS时,我找不到以编程方式添加特定联系人的选项,因为我已经拥有该联系人的电话号码.

我目前的代码看起来像这样 -

if(NSClassFromString(@"UIActivityViewController")) {
    NSString *message = @"Hi,\nCheckout My App, a new messenger.";

    UIActivityViewController *activityVC = [[UIActivityViewController alloc]initWithActivityItems:@[message] applicationActivities:nil];
                [self presentViewController:activityVC animated:YES completion:nil];
}
Run Code Online (Sandbox Code Playgroud)

我尝试了子类化UIActivityItemProvider,但它基本上允许我向不同的提供者发送不同的消息,但我不希望这样.

有没有办法选择特定联系人或提供电话号码UIActivityViewController

objective-c ios uiactivityviewcontroller

6
推荐指数
1
解决办法
454
查看次数

UIActivityViewController Gmail共享无法在swift中设置主题字段

我正在使用UIActivityViewController分享,但在我设置其主题时,特别是它没有设置.请帮忙.

let eventURL = eventShare[sender.tag]
let eventTitleText = eventTitle[sender.tag]
let contentDescription = eventDescription[sender.tag]

let contentURL:NSURL = NSURL(string:eventURL)!

let activityViewController : UIActivityViewController = UIActivityViewController(activityItems: [contentDescription, contentURL],applicationActivities: nil)

activityViewController.setValue("Our Buzz - \(eventTitleText)", forKey: "Subject")
activityViewController.popoverPresentationController?.sourceView = self.view
self.presentViewController(activityViewController, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

gmail ios uiactivityviewcontroller swift

6
推荐指数
1
解决办法
1298
查看次数

UIActivityViewController setCompletionWithItemsHandler未调用whatsapp活动

UIActivityViewController setCompletionWithItemsHandler未调用whatsapp活动.

有没有人遇到同样的问题?请分享解决方案.

NSArray *applicationActivities = @[[[JBWhatsAppActivity alloc] init]];

UIActivityViewController* activityViewController = nil;
if(installed)
    activityViewController = [[UIActivityViewController alloc] initWithActivityItems:dataToShare applicationActivities:nil];
else
    activityViewController = [[UIActivityViewController alloc] initWithActivityItems:dataToShare applicationActivities:applicationActivities];

// Setting subject field while sharing app with email
[activityViewController setValue:@"Check out this Site !" forKey:@"subject"];

NSArray *excludedActivities = @[UIActivityTypePostToWeibo,
                                UIActivityTypePrint,
                                UIActivityTypeCopyToPasteboard,
                                UIActivityTypeAssignToContact,
                                UIActivityTypeSaveToCameraRoll,
                                UIActivityTypeAddToReadingList,
                                UIActivityTypePostToFlickr,
                                UIActivityTypePostToVimeo,
                                UIActivityTypePostToTencentWeibo,
                                UIActivityTypeAirDrop
                                ];
activityViewController.excludedActivityTypes = excludedActivities;



[activityViewController setCompletionWithItemsHandler:^(NSString * __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError)
 {

 }
 ];


[self presentViewController:activityViewController …
Run Code Online (Sandbox Code Playgroud)

objective-c ios uiactivityviewcontroller

6
推荐指数
1
解决办法
1044
查看次数

UIActivityViewController-删除所有以com.apple.UIKit.activity.Open.Copy rawValue开头的活动

我试图消除所有的活动类型开始com.apple.UIKit.activity.Open.CopyUIActivityViewController

我尝试跟随但未成功,有人这样做吗?

func showShareActivity(videoURL : NSURL, onComplete:@escaping (Bool, UIActivityType?, Error?)->()) {
    let activityVC = UIActivityViewController(activityItems: [videoURL], applicationActivities: nil)
    activityVC.excludedActivityTypes = [UIActivityType(rawValue: "com.apple.UIKit.activity.Open.Copy.*")]
    activityVC.completionWithItemsHandler = { (activity, success, items, error) in
            onComplete(success, activity, erro
       }
    appDelegate?.window.rootViewController?.present(activityVC, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)

注意:当我尝试一一排除时,它可以工作,但是我想一起删除(有些我可能不知道)。(Swift / ObjC任何解决方案都可以。)

com.apple.UIKit.activity.Open.Copy.com.apple.iMovie com.apple.UIKit.activity.Open.Copy.com.apple.itunesu com.apple.UIKit.activity.Open.Copy.net.whatsapp.WhatsApp

基本上这些都是以Import with或开头的Copy to,请参考下图。 在此处输入图片说明

我认为Evernote应用程序也是如此。

objective-c ios uiactivityviewcontroller swift

6
推荐指数
0
解决办法
653
查看次数

如何在Swift 3中将我的应用程序中的位置共享给WhatsApp

我正在尝试将我的iOS应用程序中的位置共享给WhatsApp,我希望它看起来像这样:

在此处输入图片说明

我正在做的是用以下代码发送vCard:

 func vCardURL(from coordinate: CLLocationCoordinate2D, with name: String?) -> URL {
    let vCardFileURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("Shared Location.loc.vcf")

    let vCardString = [
        "BEGIN:VCARD",
        "VERSION:3.0",
        //"PRODID:-//Apple Inc.//iPhone OS 10.3.2//EN",
        "N:;My Location;;;",
        "FN:My Location",
        "item1.URL;type=pref:https://maps.apple.com/?ll=50.359890\\,12.934560&q=My%20Location&t=m",
        "item1.X-ABLabel:map url",
        "END:VCARD"
        ].joined(separator: "\n")

    do {
        try vCardString.write(toFile: vCardFileURL.path, atomically: true, encoding: .utf8)
    } catch let error {
        print("Error, \(error.localizedDescription), saving vCard: \(vCardString) to file path: \(vCardFileURL.path).")
    }

    print(vCardString)

    return vCardFileURL
} // end of function
Run Code Online (Sandbox Code Playgroud)

//调用上方的聚会

let vURL = LocationVCard.vCardURL(from: self.newLocation.coordinate, with: "Berlin")

                let activityViewController …
Run Code Online (Sandbox Code Playgroud)

ios whatsapp uiactivityviewcontroller swift ios10

6
推荐指数
1
解决办法
676
查看次数

使用UIActivityViewController发布正确的Instagram帐户

我正在使用UIActivityViewController将图像从我的应用发布到Instagram应用。

请注意,我的应用程序未使用Instagram API或登录用户的Instagram帐户。

let sharingImage = button.backgroundImage(for: [])
let avc = UIActivityViewController(activityItems: [sharingImage as AnyObject], applicationActivities: nil)

avc.excludedActivityTypes = [.addToReadingList,.airDrop,.assignToContact,.copyToPasteboard,.openInIBooks,.postToFacebook,.postToFlickr,.postToTencentWeibo,.postToTwitter,.postToVimeo,.postToWeibo,.saveToCameraRoll,.message,.mail,.print]
if let wPPC = avc.popoverPresentationController {
    wPPC.sourceView = followUsButton
}
self.present(avc, animated: true, completion: nil)
Run Code Online (Sandbox Code Playgroud)

我使用多个帐户登录了我的Instagram应用。从我的应用程序共享后,Instagram尝试发布到当前已登录的帐户“ A”(在Instagram应用程序内部)。这很有道理。

但是,如果我现在切换到Instagram应用程序并切换到其中的帐户“ B”,请返回我的应用程序,然后再次尝试共享,它会继续尝试发布到帐户“ A”。

修复它的唯一方法是杀死MY应用程序,然后重新启动它,然后加载正确的当前登录帐户“ B”。

有没有一种方法可以在共享时以编程方式重新加载正确的Insta帐户?

ios uiactivityviewcontroller swift

6
推荐指数
1
解决办法
132
查看次数