当我使用Apple的UIActivityViewController与WeChat(weixin)共享一些图像时.我发现有时它不起作用.大多数情况下,当我只选择1~3张图像时效果很好,但如果我共享9张图片(微信允许的最大数量),它肯定会失败,控制台会打印出来

2016-04-01 16:14:34.258 EverPhoto[5567:1981394] plugin
com.tencent.xin.sharetimeline interrupted 2016-04-01 16:14:34.258
EverPhoto[5567:1981394] plugin com.tencent.xin.sharetimeline
invalidated

这是代码:

__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的自定义对象.

附:我尝试了APP Google Photo,发现它在共享功能方面做得很好.它可以使用UIActivityViewController与WeChat共享9张图像,甚至是原始高清尺寸的系统照片断言.
那么,我该如何解决这个问题呢?

解决方法

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

Memory limits for running app extensions are significantly lower than the memory limits imposed on a foreground app. On both platforms,the system may aggressively terminate extensions because users want to return to their main goal in the host app. Some extensions may have lower memory limits than others: For example,widgets must be especially efficient because users are likely to have several widgets open at the same time.

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

- (UIImage *)imageWithColor:(UIColor *)color
{
  CGRect rect = CGRectMake(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将图像分享到微信无法正常工作的更多相关文章

  1. 详解html5 canvas 微信海报分享(个人爬坑)

    这篇文章主要介绍了详解html5 canvas 微信海报分享(个人爬坑)的相关资料,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

  2. ios – UIActivityViewController和UIDocumentInteractionController

    如何组合UIActivityViewController和UIDocumentInteractionController?Mail应用程序和Tumblr应用程序似乎使用UIDocumentInteractionController来编译UIActivityViewController,因为它们的控制器还显示除了UIActivities之外的“Openin”按钮.我怎么能做到这一点?解决方法在UID

  3. ios – UIActivityViewController将图像分享到微信无法正常工作

    当我使用Apple的UIActivityViewController与WeChat(weixin)共享一些图像时.我发现有时它不起作用.大多数情况下,当我只选择1~3张图像时效果很好,但如果我共享9张图片(微信允许的最大数量),它肯定会失败,控制台会打印出来2016-04-0116:14:34.258EverPhoto[5567:1981394]plugincom.tencent.xin.shar

  4. ios – UIActivityViewController:呈现的视图控制器的色彩

    在应用程序中,我使用白色作为主色调颜色.如果用户打开UIActivityViewController,我将控制器的色调颜色设置为标准iOS蓝色.这对于活动视图本身很有用,但是当想要发送邮件时,色调颜色不是蓝色而是白色.有办法设置呈现视图的色调颜色会很棒.有吗?打开MFMailComposeViewController并将色调颜色设置为蓝色也会对显示的UIActionSheet产生影响,如果从UIA

  5. ios8 – UIActivityViewController在iOS 8中不起作用

    我正在使用UIActivityViewController为我的应用程序分享一些东西.它适用于iOS8之前的任何设备.问题是文本,图像不会显示在iOS8设备或模拟器中的电子邮件,推特,Facebook中.这是我的代码:我做错了什么吗?谢谢.编辑:新的Xcode6.1和iOS8.1无法解决问题.它会导致电子邮件崩溃.以下是一些截图(以电子邮件共享为例):>在iOS7中(你可以看到图像)>在iOS8(

  6. xcode – Swift 2 – 使用UIActivityViewController共享视​​频

    解决方法这就是你怎么做的…

  7. ios – 如何向UIActivityViewController添加自定义按钮?

    我在ios7中使用UIActivity.只需几行代码即可正常工作.现在我想添加Instagram分享按钮.有没有办法将自定义按钮添加到操作表?

  8. ios – 如何在UIActivityViewController调用然后关闭后执行操作

    解决方法在这种情况下,您可以使用completionHadler:

  9. ios – 通过UIActivityViewController更改MFMailComposeViewController中的状态栏颜色

    我试图改变导航栏按钮的颜色,导航栏色调颜色和文字颜色,但是我似乎没有得到任何地方.MFMailComposeViewController正在通过一个UIActivityViewController激活,我已经尝试了一些以前工作的不同方法(不通过UIActivityViewController).这是我当前的代码:这是建议here.我也试过这个:我也想改变状态栏颜色.任何人都有什么想法?更新:我修复

  10. ios – 现在UIActivityViewController- LaunchServices:invalidationHandler调用

    我已经看过有关的问题here和here,我已经实施了建议的答案没有用.我在UIToolbar上有一个UIBarButtonItem,用于发送操作的连接到btnTBAction_touch:在ViewController的类头中有:类实现中的相关方法:当我触摸调用上述方法的按钮时,在物理设备上以调试模式运行时,我在调试控制台中获取以下内容但是,与此相关的问题不同,我的应用程序在这种情况下不会崩溃,应

随机推荐

  1. iOS实现拖拽View跟随手指浮动效果

    这篇文章主要为大家详细介绍了iOS实现拖拽View跟随手指浮动,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. iOS – genstrings:无法连接到输出目录en.lproj

    使用我桌面上的项目文件夹,我启动终端输入:cd然后将我的项目文件夹拖到终端,它给了我路径.然后我将这行代码粘贴到终端中找.-name*.m|xargsgenstrings-oen.lproj我在终端中收到此错误消息:genstrings:无法连接到输出目录en.lproj它多次打印这行,然后说我的项目是一个目录的路径?没有.strings文件.对我做错了什么的想法?

  3. iOS 7 UIButtonBarItem图像没有色调

    如何确保按钮图标采用全局色调?解决方法只是想将其转换为根注释,以便为“回答”复选标记提供更好的上下文,并提供更好的格式.我能想出这个!

  4. ios – 在自定义相机层的AVFoundation中自动对焦和自动曝光

    为AVFoundation定制图层相机创建精确的自动对焦和曝光的最佳方法是什么?

  5. ios – Xcode找不到Alamofire,错误:没有这样的模块’Alamofire’

    我正在尝试按照github(https://github.com/Alamofire/Alamofire#cocoapods)指令将Alamofire包含在我的Swift项目中.我创建了一个新项目,导航到项目目录并运行此命令sudogeminstallcocoapods.然后我面临以下错误:搜索后我设法通过运行此命令安装cocoapodssudogeminstall-n/usr/local/bin

  6. ios – 在没有iPhone6s或更新的情况下测试ARKit

    我在决定下载Xcode9之前.我想玩新的框架–ARKit.我知道要用ARKit运行app我需要一个带有A9芯片或更新版本的设备.不幸的是我有一个较旧的.我的问题是已经下载了新Xcode的人.在我的情况下有可能运行ARKit应用程序吗?那个或其他任何模拟器?任何想法或我将不得不购买新设备?解决方法任何iOS11设备都可以使用ARKit,但是具有高质量AR体验的全球跟踪功能需要使用A9或更高版本处理器的设备.使用iOS11测试版更新您的设备是必要的.

  7. 将iOS应用移植到Android

    我们制作了一个具有2000个目标c类的退出大型iOS应用程序.我想知道有一个最佳实践指南将其移植到Android?此外,由于我们的应用程序大量使用UINavigation和UIView控制器,我想知道在Android上有类似的模型和实现.谢谢到目前为止,guenter解决方法老实说,我认为你正在计划的只是制作难以维护的糟糕代码.我意识到这听起来像很多工作,但从长远来看它会更容易,我只是将应用程序的概念“移植”到android并从头开始编写.

  8. ios – 在Swift中覆盖Objective C类方法

    我是Swift的初学者,我正在尝试在Swift项目中使用JSONModel.我想从JSONModel覆盖方法keyMapper,但我没有找到如何覆盖模型类中的Objective-C类方法.该方法的签名是:我怎样才能做到这一点?解决方法您可以像覆盖实例方法一样执行此操作,但使用class关键字除外:

  9. ios – 在WKWebView中获取链接URL

    我想在WKWebView中获取tapped链接的url.链接采用自定义格式,可触发应用中的某些操作.例如HTTP://我的网站/帮助#深层链接对讲.我这样使用KVO:这在第一次点击链接时效果很好.但是,如果我连续两次点击相同的链接,它将不报告链接点击.是否有解决方法来解决这个问题,以便我可以检测每个点击并获取链接?任何关于这个的指针都会很棒!解决方法像这样更改addobserver在observeValue函数中,您可以获得两个值

  10. ios – 在Swift的UIView中找到UILabel

    我正在尝试在我的UIViewControllers的超级视图中找到我的UILabels.这是我的代码:这是在Objective-C中推荐的方式,但是在Swift中我只得到UIViews和CALayer.我肯定在提供给这个方法的视图中有UILabel.我错过了什么?我的UIViewController中的调用:解决方法使用函数式编程概念可以更轻松地实现这一目标.

返回
顶部