0

Apple 的文档清楚地说明了使用 SLComposeViewController 提供与其他社交网络(如 Twitter 和 Facebook)的共享功能。

典型代码将用于isAvailableForServiceType验证特定服务是否可用,然后将完成处理程序添加到视图控制器,SLComposeViewControllerResult可以在其中检查SLComposeViewControllerResultCancelledSLComposeViewControllerResultDone检查用户是否点击了“发布”按钮或“取消”按钮共享视图显示后。

这里的问题是,如果您用于SLComposeViewControllerResultDone验证用户是否发出了请求,您实际上并不会检查它是否成功,例如当用户连接受限或没有连接时。

我已尝试使用我的一个应用程序对此进行测试,并注意到该SLComposeViewControllerResultDone常量仍然有效,即使已打开飞行模式以致无法请求。这意味着用户填写共享视图字段并点击“发布”,即使我真的应该检查以确保发布确实成功,我的成功代码也会执行。

目前,我认为最好的选择是使用标准的可达性选项(如这里推荐)检查 Internet 连接,如果连接不可用,则禁用共享按钮,但我不确定这是否是最佳解决方案它不考虑用户可以点击“发布”但实际请求不成功的有限连接。

我的问题是检测共享请求是否成功完成的最佳方法是什么

4

1 回答 1

0

那么你需要确保你没有写在下面的行中didSelectPost

[self.extensionContext completeRequestReturningItems:nil completionHandler:nil];

一旦你在你的请求处理程序中获得成功或失败,你可以写在上面的行,所以你didSelectPost应该是这样的:

- (void)didSelectPost {
    NSExtensionItem *inputItem = self.extensionContext.inputItems.firstObject;
    NSItemProvider *attachment = inputItem.attachments.firstObject;
    if ([attachment hasItemConformingToTypeIdentifier:@"public.url"])
    {
        //NSString *strLink = [attachement loadItemForTypeIdentifier:@"public.url" options:nil completionHandler:nil];
        [attachment loadItemForTypeIdentifier: @"public.url"
                                       options: nil
           // make your request here
        }];
    }
}
于 2015-06-24T12:06:55.940 回答