在UIDocumentInteractionController中复制WhatsApp图标

时间:2017-07-25 21:43:10

标签: ios whatsapp uidocumentinteraction

我正在使用以下代码通过WhatsApp

分享图片
-(void)shareImageUsingDocumentController:(UIImage *)image fileName:(NSString *)fileName UTI:(NSString *)UTI completion:(void (^)(SharingResult sharingResult))completion
{
    if (completion)
    {
        self.shareCompleted = completion;
    }

    self.documentInteractionController = nil;
    self.documentInteractionController = [[UIDocumentInteractionController alloc] init];
    NSURL *localUrl = [self writeLocalFileFromUIImage:image fileName:fileName];
    if (localUrl != nil) {
        self.documentInteractionController.URL = localUrl;
        self.documentInteractionController.UTI = UTI;
        self.documentInteractionController.delegate = self;

        [self presentDocumentIneractionController];
    }
}

-(UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller
{
    return self.presentingViewController;
}

这是来自BDSshare library,我在Swift应用程序中使用它。我用这段代码调用函数。

img: UIImage = self.loadImage()
BDGShare.shared().shareImage(usingDocumentController: img, fileName: "whatsAppTmp.wai", uti: "net.whatsapp.image") {(SharingResult) -> Void in
    // Handle share result...
    self.handleShareResult(shareTarget.type, shareResult: SharingResult)
}

我遇到的问题是我在控制器中看到了WhatsApp的两个图标。 enter image description here

有谁能看到为什么会有两个WhatsApp图标?我一直在搜索,我找不到任何与我不同的帖子。我找不到任何人提到有多个WhatsApp图标的问题。 如果我使用第一个图标(标记为'WhatsApp'),那么它实际上不起作用。我选择一个联系人并点击发送,我得到一个带有文件名的屏幕。使用第二个按钮(标记为“复制到WhatsApp”)我选择了一个联系人,我在黑色屏幕上看到了带有文字条目的图片。

我宁愿跳过选择器并直接进入WhatsApp,但我只能选择一个按钮(当然是一个有效的按钮;)

TIA Mike

2 个答案:

答案 0 :(得分:0)

事实证明,我忘了WhatsApp是默认支持的服务之一。所以我看到的是默认项目和我通过使用UTI for WhatsApp调用UIDocumentInteractionController添加的项目。所以我从同一个BDGShare lib切换到shareImageUsingActivityController,这一切都很好。

麦克

答案 1 :(得分:0)

我认为 Whatsapp 存在问题,我遇到了同样的问题,但在我的情况下,当您共享.wai类型的图像时,您无法看到图像预览显示文字" whatsapp图片独占"。我的解决方案就是这个组合:

UTI = @"net.whatsapp.image";

nameOfTemporalFile = @"WhatsAppimage.jpeg"; 

而不是

nameOfTemporalFile = @"WhatsAppimage.wai";