没有连接时返回SLComposeViewControllerResultDone

时间:2014-03-03 08:27:35

标签: ios facebook ios7

使用SLComposeViewController发布到Facebook时,即使设备没有网络连接,也会返回SLComposeViewControllerResultDone。任何方式,所以我只是在实际发布成功后才显示“成功”消息。

[_shareComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result)
     {

         switch (result)
         {
             case SLComposeViewControllerResultCancelled:

                 break;
             case SLComposeViewControllerResultDone:
             {
                // Show success message

             }
                 break;
             default:
                 break;
         }
     }];

2 个答案:

答案 0 :(得分:3)

导入Apples的Reachability文件并使用以下方法检查:

- (BOOL)connected 
{
    Reachability *reachability = [Reachability reachabilityForInternetConnection];  
    NetworkStatus networkStatus = [reachability currentReachabilityStatus]; 
    return networkStatus != NotReachable;
}



[_shareComposerSheet setCompletionHandler:^(SLComposeViewControllerResult result)
     {

         switch (result)
         {
             case SLComposeViewControllerResultCancelled:

                 break;
             case SLComposeViewControllerResultDone:
             {

                  if (![self connected]) {
                       // Show internet is not available message
                  } 
                  else {
                       // Show success message
                  }

             }
                 break;
             default:
                 break;
         }
     }];

答案 1 :(得分:0)

From apple's doc

  

当用户完成撰写帖子时调用的处理程序。

<强>讨论

  

处理程序有一个指示用户是否的参数   完成或取消撰写帖子。此块不保证   在任何特定的线程上调用。

从上面,您可以清除,完成处理程序将在您完成合成后调用,但它没有响应网络连接可用性或发布失败。你必须在作曲前检查连接。

您也可以使用此处理程序获得这两个结果。

typedef NS_ENUM(NSInteger,
   SLComposeViewControllerResult) {
   SLComposeViewControllerResultCancelled,
   SLComposeViewControllerResultDone
};

也就是说,你的作曲家视图控制器是发布或取消。