Apple's documentation is clear使用SLComposeViewController与其他社交网络(如Twitter和Facebook)提供共享功能。
典型代码将使用isAvailableForServiceType
来验证特定服务是否可用,然后向视图控制器添加完成处理程序,其中SLComposeViewControllerResult
可以检查SLComposeViewControllerResultCancelled
或{{ 1}},用于检查用户在显示共享视图后是否点按了“发布”按钮或“取消”按钮。
这里的问题是,如果您使用SLComposeViewControllerResultDone
来验证用户是否发出了请求,那么您实际上并不会检查它是否成功,例如当用户有限或没有连接时。
我已尝试使用其中一个应用程序对此进行测试,并注意到SLComposeViewControllerResultDone
常量仍然有效,即使启用了飞行模式,也无法提出请求。这意味着用户填写共享视图字段并点击“发布”并执行我的成功代码即使我应该检查以确保帖子确实成功。
目前,我认为最好的选择是使用标准可达性选项(as recommended here)检查Internet连接,如果连接不可用则禁用共享按钮,但我不确定是否是最好的解决方案,因为它没有考虑用户可以点击“发布”但实际请求不成功的有限连接。
我的问题是检测共享请求是否已成功完成的最佳方法是什么?
答案 0 :(得分: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
}];
}
}