有没有办法在 iOS9 的状态栏中隐藏 "Back to Safari"?

Is there a way to hide "Back to Safari" from status bar in iOS9?

如何以编程方式从状态栏隐藏此 <返回 Safari?

我正在我的应用程序中获取它——因为如果用户想要使用他们的 Facebook 帐户登录,我将从我的应用程序中退出。

这是我不喜欢(想要)"Back to Safari" 在我的应用程序中使用的场景。

  1. 首次启动应用程序(且用户未登录)。
  2. 用户选择使用 Facebook 登录选项。
  3. Facebook iOS SDK 出现了,它把我带到了 Safari。
  4. 我登录并返回应用程序
  5. 但是,"Back to Safari"...它不应该再出现了。

不,没有 API 可以让您这样做。

您可以通过转发到网站并转发回您的应用来实现此目的。以下步骤允许您隐藏状态栏中的 'Back to Safari',MyApp 是示例应用程序名称:

  1. 将您的应用程序 URL 方案添加到 Info.plist

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>myapp</string>
    </array>
    
  2. 在网站上设置自定义 URL 转发(例如 http://example.com/myapp

    _redirect_rule_from /myapp
    _redirect_rule_to myapp://
    
  3. 在您的授权方法闭包中点击您在步骤 2 中创建的转发

    - (void)willLoginWithFacebook
    {
       __weak __typeof(self) weakSelf = self;
    
       [self.view setUserInteractionEnabled:NO];
       [self.sessionManager authenticateViaFacebookWithCompletion:^(NSString *token, NSSet *grantedPermissions,
        NSError *error) {
    
    if (error) {
        if (error.code != myappErrorCodeCancelled) {
            [weakSelf.rootViewController presentError:error];
        }
    }
    else {
        [weakSelf authorizeWithFacebookToken:token];
        NSString *customURL = @"myapp://";
    
        if ([[UIApplication sharedApplication]
             canOpenURL:[NSURL URLWithString:customURL]])
        {
            NSString *stringURL = @"http://example.com/myapp";
            NSURL *url = [NSURL URLWithString:stringURL];
            [[UIApplication sharedApplication] openURL:url];
        }
        else
        {
            UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"URL error"
                                                            message:[NSString stringWithFormat:
                                                                     @"No custom URL defined for %@", customURL]
                                                           delegate:self cancelButtonTitle:@"Ok" 
                                                  otherButtonTitles:nil];
            [alert show];
        }
       };
    
     }];
    
    }