Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios UIActivityViewController无法将图像共享到微信_Ios_Objective C_Iphone_Wechat - Fatal编程技术网

Ios UIActivityViewController无法将图像共享到微信

Ios UIActivityViewController无法将图像共享到微信,ios,objective-c,iphone,wechat,Ios,Objective C,Iphone,Wechat,当我使用苹果的UIActivityViewController向微信(微信)分享一些图片时。我发现有时候它不起作用。大多数情况下,当我只选择1~3张图片时,它工作得很好,但如果我共享9张图片(微信允许的最大数量),它肯定会失败,并且控制台会打印 2016-04-01 16:14:34.258 EverPhoto[5567:1981394]插件 com.tencent.xin.sharetimeline 2016-04-01 16:14:34.258 EverPhoto[5567:1981394]

当我使用苹果的UIActivityViewController向微信(微信)分享一些图片时。我发现有时候它不起作用。大多数情况下,当我只选择1~3张图片时,它工作得很好,但如果我共享9张图片(微信允许的最大数量),它肯定会失败,并且控制台会打印

2016-04-01 16:14:34.258 EverPhoto[5567:1981394]插件 com.tencent.xin.sharetimeline 2016-04-01 16:14:34.258 EverPhoto[5567:1981394]插件com.tencent.xin.sharetimeline 无效

代码如下:

__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
是实现协议的自定义对象
UIActivityItemSource

另外,我试过谷歌照片应用程序,发现它的分享功能做得很好。它可以使用
UIActivityViewController
与微信共享9张高清大小的系统照片。
那么,我该如何解决这个问题呢?

微信的共享扩展因应用扩展的内存限制而终止。
根据苹果的建议:优化效率和性能

运行应用程序扩展的内存限制明显低于前台应用程序的内存限制。在这两种平台上,系统可能会主动终止扩展,因为用户希望在主机应用程序中返回其主要目标。一些扩展可能具有比其他扩展更低的内存限制:例如,小部件必须特别有效,因为用户可能同时打开多个小部件

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.在与微信共享之前,您可以缩小图像的比例,以下是一些

我也有同样的问题。@wj2061的答案是正确的,但不是解决方案。我想你可能用UIImage设置了shareItem。如果您有图像的fileUrl,请将其设置为shareItem。如果没有,请先尝试将UIImage保存到文件。 在shareItem类中,返回fileUrl

- (nullable id)activityViewController:(UIActivityViewController*)activityViewController itemForActivityType:(NSString *)activityType{
    return _filePathUrl;
}

这对我来说很有用。

文章提到谷歌照片应用程序可以共享高清图像。原因是什么?如果有人发布了错误的解决方案,请标记它。