Facebook SDK 3.1 iOS:如何检查Facebook是否可访问?

时间:2013-01-22 11:34:00

标签: ios facebook sdk ping

我正在编写我的第一个iOS应用程序与Facebook集成,并试图优雅地处理一些边缘案例。现在我考虑的是没有互联网接入的情况,或者特别是没有Facebook访问的情况。

" Srumptious"在我看来,教程处理这个问题相当糟糕。当出现没有互联网访问权限的登录屏幕时,用户可以选择单击“登录”按钮,然后在Safari中的一个无法访问的页面上放弃它们。我更愿意通过解释问题的消息提醒用户。

所以我的问题是," ping"最好的方式是什么? Facebook服务没有任何人登录,以确保后续登录请求成功?

谢谢!

2 个答案:

答案 0 :(得分:0)

尝试在示例中找到

-(void) sessionStateChanged: (FBSession*) session
                      state: (FBSessionState) state
                      error: (NSError*) error
{
   switch(state)
  {
    case FBSessionStateOpen:
    {
       // Logged
     break;
    }

    case FBSessionStateClosed:
    {
       // Logouted
     break;
    }

    case FBSessionStateFailed:
    {
       // connect failed or some error
       // it seems, this place what you need ?
     break;
    }
  }
}

<强> UPD

或者您可以在此处检查Safari错误(FBRequestConnection.m)

-(void) completeWithResponse: (NSURLResponse*) response
                        data: (NSData*) data
                     orError: (NSError*) error
{
     //Try check this params at each your case
}

答案 1 :(得分:0)

根据@Harald的建议,您可以使用Apple的可达性样本:https://developer.apple.com/library/ios/samplecode/Reachability/Introduction/Intro.html

只需将Reachability.h和Reachability.m导入您的项目。

如果您只是想一次检查您是否已连接到互联网,请考虑这一点。

+(BOOL)isConnectionToInternet
{
    Reachability* internetReachability = [Reachability reachabilityForInternetConnection];
    NetworkStatus netStatus = [internetReachability currentReachabilityStatus];
    switch (netStatus) {
        case NotReachable:NSLog(@"NotReachable");
            return NO;
        case ReachableViaWiFi:NSLog(@"ReachableViaWiFi");
            return YES;
        case ReachableViaWWAN:NSLog(@"ReachableViaWWAN");
            return YES;
    }
}

您还可以使用Reachability中的reachabilityWithAddress方法检查特定网址,例如facebook.com。

希望这有帮助。