有没有办法从 iOS9 的状态栏中隐藏“返回 Safari”?

Posted

技术标签:

【中文标题】有没有办法从 iOS9 的状态栏中隐藏“返回 Safari”?【英文标题】:Is there a way to hide "Back to Safari" from status bar in iOS9? 【发布时间】:2015-12-06 07:37:39 【问题描述】:

如何以编程方式隐藏此

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

这是我不喜欢(想要)在我的应用中“返回 Safari”的场景。

    首次启动应用时(用户未登录)。 用户选择使用 Facebook 登录选项。 Facebook ios SDK 出现了,它把我带到了 Safari。 我登录并返回应用程序 但是,有“返回 Safari”……它不应该再出现了。

【问题讨论】:

最好不要在这里问测试版操作系统问题,而是在苹果测试版论坛上问。在这里发帖 - forums.developer.apple.com/community/pre-release/ios-9-beta 这不是一个与错误相关的问题。如果我们可以以编程方式隐藏这个问题,我想要一个答案?因为一旦我关闭(删除)Safari 浏览器,该消息就会被删除。但我不希望这种行为,因为我不希望我的用户返回 Safari。 找到解决方案的运气好吗? @EaswaramoorthyK,不——还没有。 【参考方案1】:

不,没有 API 可以让您执行此操作。

【讨论】:

我们至少可以覆盖该操作吗? 太好了,我有打开其他应用程序并返回到我的逻辑,这个按钮搞乱了我的整个逻辑 - 我不明白为什么它可以被禁用? 我找不到任何文档。我认为我们根本不能碰它。【参考方案2】:

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

    将您的应用程序 URL Scheme 添加到 Info.plist

    <key>LSApplicationQueriesSchemes</key>
    <array>
        <string>myapp</string>
    </array>
    

    在网站上设置自定义 URL 转发(例如 http://example.com/myapp)

    _redirect_rule_from /myapp
    _redirect_rule_to myapp://
    

    在您的授权方法中,关闭您在第 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];
        
       ;
    
     ];
    
    
    

【讨论】:

以上是关于有没有办法从 iOS9 的状态栏中隐藏“返回 Safari”?的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏href不出现在浏览器窗口的底部

如何隐藏或删除Apple Watch状态栏中的时间?

隐藏/显示导航栏中两个右栏按钮之一

iOS9:自定义 UIWindow 使状态栏消失

如何在状态栏中隐藏 url 地址? [复制]

在状态栏中隐藏活动指示器[重复]