我正在编写我的第一个iOS应用程序与Facebook集成,并试图优雅地处理一些边缘案例。现在我考虑的是没有互联网接入的情况,或者特别是没有Facebook访问的情况。
" Srumptious"在我看来,教程处理这个问题相当糟糕。当出现没有互联网访问权限的登录屏幕时,用户可以选择单击“登录”按钮,然后在Safari中的一个无法访问的页面上放弃它们。我更愿意通过解释问题的消息提醒用户。
所以我的问题是," ping"最好的方式是什么? Facebook服务没有任何人登录,以确保后续登录请求成功?
谢谢!
答案 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。
希望这有帮助。