当我使用Apple的UIActivityViewController将一些图像共享给微信时。我发现有时它不起作用。在大多数情况下,当我仅选择1〜3张图像时效果很好,但是如果我共享9张图像(微信允许的最大数量),则肯定会失败,并且控制台将打印



这是代码:

__weak typeof(self) __weakSelf = self;
self.activityViewController = [[UIActivityViewController alloc] initWithActivityItems:self.shareItems applicationActivities:nil];
self.activityViewController.excludedActivityTypes = @[UIActivityTypePostToFacebook,
                                     UIActivityTypePostToTwitter,
                                     UIActivityTypePostToVimeo,
                                     UIActivityTypePostToTencentWeibo,
                                     UIActivityTypePrint,
                                     UIActivityTypeCopyToPasteboard,
                                     UIActivityTypeAssignToContact,
                                     UIActivityTypeSaveToCameraRoll,
                                     UIActivityTypeAddToReadingList,
                                     UIActivityTypePostToFlickr,
                                     ];
self.activityViewController.completionWithItemsHandler = ^(NSString * __nullable activityType, BOOL completed, NSArray * __nullable returnedItems, NSError * __nullable activityError){
    DLog(@"shareCompleted : %@", completed ? @"YES" : @"NO")
    __weakSelf.shareItems = nil;
    __weakSelf.activityViewController = nil;
};

[self.containerVc presentViewController:self.activityViewController animated:YES completion:nil];
ShareItems是实现协议(protocol)UIActivityItemSource的自定义对象。

P.S.我尝试了APP Google Photo,发现它的共享功能做得非常好。它可以使用UIActivityViewController向微信分享甚至具有原始高清尺寸的系统照片的9张图像。
那么,我该如何解决这个问题呢?

最佳答案

由于应用程序扩展程序的内存限制,微信的共享扩展程序已终止。
根据Apple的App Extension Programming Guide:优化效率和性能



1.我创建了9张非常小的图像,并成功与微信共享:

- (UIImage *)imageWithColor:(UIColor *)color
{
  CGRect rect = CGRectMake(0, 0, 1, 1);
  UIGraphicsBeginImageContext(rect.size);
  CGContextRef context = UIGraphicsGetCurrentContext();

  CGContextSetFillColorWithColor(context, [color CGColor]);
  CGContextFillRect(context, rect);

  UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();

  return image;
}

2.您可以按比例缩小图片,然后再与微信分享,这是一些Scale methods

关于ios - UIActivityViewController共享图像到微信不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36351764/

10-12 12:54