Facebook共享iOS 11中的扩展崩溃



我正在使用UIActivityViewController使用户在社交媒体上共享图像。但是,几秒钟后,Facebook的共享对话框在iOS 11中崩溃:

[core] SLRemoteComposeViewController: (this may be harmless) viewServiceDidTerminateWithError: Error Domain=_UIViewServiceErrorDomain Code=1 "(null)" UserInfo={Terminated=disconnect method} [core] SLComposeViewController remoteViewController: <SLRemoteComposeViewController: 0x1040b7e00> didTerminateWithError: Error Domain=_UIViewServiceErrorDomain Code=1 "(null)" UserInfo={Terminated=disconnect method}

iOS 10中没有发生错误,尽管图像需要几秒钟才能显示。

任何想法是什么原因导致了这个问题?我需要等待Facebook解决此问题吗?

Facebook不再集成在iOS 11中。您可以集成本机Facebook SDK并使用此代码:

FBSDKSharePhoto *photo = [[FBSDKSharePhoto alloc] init];
photo.image = _image;
photo.userGenerated = YES;
FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
content.photos = @[photo];
[FBSDKShareDialog showFromViewController:self withContent:content delegate:self];

仅在设备上安装了本机Facebook应用程序(iOS 10和PIROT NOWENG APP)时才起作用,您可以检查它:

BOOL isInstalledFBApp = [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"fbshareextension://"]];

有关更多信息:https://developers.facebook.com/docs/sharing/ios/

Karen Hovhannisyan的答案是正确的。比例大于1.0的图像将崩溃Twitter和Facebook。缩放图像可以解决问题。但是它并不是真正的理想。我试图通过增加大小以匹配分辨率来使图像归一化,但这也导致崩溃。可能是因为图像太大。

func shareableImage(image: UIImage) -> UIImage {
    guard let cgImage = image.cgImage else { return image }
      let size: CGSize = CGSize(width: CGFloat(cgImage.width) / image.scale, height: CGFloat(cgImage.height) / image.scale)
    defer {
        UIGraphicsEndImageContext()
    }
    UIGraphicsBeginImageContextWithOptions(size, false, 1)
    image.draw(in: CGRect(origin: .zero, size: size))
    return UIGraphicsGetImageFromCurrentImageContext() ?? image
}

我在将图像分享到WhatsApp时面临同一问题,几秒钟后,共享对话框自行关闭。多亏了@Mike DeMidov,我意识到,由于我保存图像的方式,要共享的图像出了问题。

if let testImage = UIImageJPEGRepresentation(self.testImageView.image!, 0.5) {
    let destinationUrl = DocumentHelper.getDocumentsDirectory().appendingPathComponent(identifier + "_test.png")
    try? testImage.write(to: destinationUrl)
}

原因是因为我正在使用UIImageJPEGRepresentation转换图像,但是我将图像名称/文件格式设置为.png。

我要解决的问题就是将其更改为.jpeg,如下所示。

if let testImage = UIImageJPEGRepresentation(self.testImageView.image!, 0.5) {
    let destinationUrl = DocumentHelper.getDocumentsDirectory().appendingPathComponent(identifier + "_test.jpeg")
    try? testImage.write(to: destinationUrl)
}

希望它有帮助!

在5月的情况下,Facebook,Twitter和WhatsApp共享扩展崩溃,因为共享图像量表属性> 1.0

相关内容

  • 没有找到相关文章

最新更新