【问题标题】:Facebook SDK 3.1 iOS: How to check whether Facebook is accessible?Facebook SDK 3.1 iOS:如何检查 Facebook 是否可以访问?
【发布时间】:2013-01-22 11:34:00
【问题描述】:

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

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

所以我的问题是,在没有任何人登录的情况下“ping”Facebook 服务以最好地确保后续登录请求成功的最佳方式是什么?

谢谢!

【问题讨论】:

  • 与 facebook 无关的苹果提供了可达性示例,它检查网络可用性,我什至在尝试连接之前将其用作预检查
  • 哦,酷,这可能正是我需要的。如果有的话,我更喜欢 Facebook SDK 解决方案,但如果没有的话,这听起来是个不错的选择。谢谢!

标签: ios facebook sdk ping


【解决方案1】:

尝试在示例a中查找

-(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
}

【讨论】:

  • 感谢@CReaTuS 的快速回复。但是这里的问题是 sessionStateChanged 在初始登录的情况下永远不会被调用,因为该过程将卡在 Safari 中(尽管我认为您的建议适用于用户已经拥有令牌并且在应用程序是必需的)。
  • 酷我有机会试试你的新建议!
【解决方案2】:

根据@Harald 的建议,您可以使用 Apple 的 Reachability 示例: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 方法检查特定的 url,例如 facebook.com。

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2012-10-09
    • 1970-01-01
    • 2012-09-18
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多