精华内容
下载资源
问答
  • Safari 中打开 URL

    2016-04-10 20:56:38
    Safari 中打开 URL
  • 在Safari中打开自定义URL功能,源码ARSafariActivity,我们知道ARSafariActivity是UIActivity的一个子类,该源码主要是实现了用以在Safari中打开URL的功能的,源码比较简单的,没有几行的代码的。 A UIActivity ...
  • Swift:在Safari中打开App

    2019-09-11 21:58:13
    Swift:在Safari中打开App 打开之前会发生什么呢,先看看这个图: 我这里只是简单模拟了一下。当你输入一个特殊的“url”之后,Safari弹出一个提示,问你是否继续打开这个App。如果你这个时候confirm的话。那么这...

    Swift:在Safari中打开App

    打开之前会发生什么呢,先看看这个图:

    我这里只是简单模拟了一下。当你输入一个特殊的“url”之后,Safari弹出一个提示,问你是否继续打开这个App。如果你这个时候confirm的话。那么这个App就会打开。

    我们打开看看这个app是什么样的App。看图:

    是一个灰常简答的TableView。然后点击某一行的时候会跳转到一个号称是详细也的地方。其实什么都没有。只有一个地方可以看的,那就是这个页面的title。记住这个title,后面的功能展示就全靠他了。

    当你跳转到详细页的时候就是这个样子的:

    是的就一个title,然后没别的了。

    我们接着上文继续。上文说到在Safari中输入一个特殊的“URL”,confirm了Safari的弹出框以后就会打开这个应用。到这里来说只是初级的功能。因为这样显然还是不够的。我们需要的是用户完成confirm弹出框以后可以打开详细页。一步一步来。

    1. 在Xcode6+版本中选择你的项目,之后选择infotab。看图:

    从左到右一共三步就到了设置url scheme的地方了。图:

    在info页面里的最下面有个URL Types,点开以后在里面设置URL Scheme为deeplink,当然了,这里可以按照你需要的方式设置任意的URL Scheme。

    到这里,保存一下然后运行你的App。App运行起来以后按下cmd+shift+H,调到app界面。之后打开Safari,在地址栏中输入deeplink://,然后点Go按钮。接下来就会弹出一个comfirm的弹框。点击open,你的app就会打开。图:

    1. 在地址栏中输入你定义的url scheme。

    2. 点Go按钮后弹出confirm框

    点open按钮后,你的app就会打开。

    但是。。我们要得不只是这样而已。url scheme能提供给我们的也不只是这样而已。我们要打开的是详细页。

    url 有了scheme,那么就可以有后面的一堆东西。比如:http://baidu.com。有了http://后面就可以有baidu.com。我们也可以这样用。在deeplink://后面加入一串数字,用这串数字可以代表很多。在这里我们就用这串数字来代表一个详细页需要展示的产品的产品编号。这些都很简单,但是怎么实现呢???

    其实,很多的App的第三方登录用的就是这个东西。比如微博或者微信的登录或者分享之类的。在选择了登录之后就会跳到微信或者微博里,等登录了以后就可以跳转回去。这些都是用的自定义url scheme。在配置SDK的时候你都会看到这样的要求。使用这样的方法打开的方法是:func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool,这个方法是在AppDelegate类中得。默认没有提供实现,需要我们自己添加。

     

    在这个方法执行的时候,添加一段代码:println(url.absoluteString),可以打印出来开启App的url是什么。我们这里当然是,比如,我要包括产品的详细编号的话就是:"deeplink://1234567890"。那么在这里打印出来的就是整个的这个字符串:"deeplink://1234567890"。因为,我们的url scheme是固定不变的。那么我们可以截取产品的具体编号。

    var itemCode = (url.absoluteString! as NSString).substringFromIndex(11)

    这样就可以获得产品的编号。然后调用window的rootViewController(需要说明的是,我们的rootViewControllerUINavigationController)。只需要把产品编号赋值给产品详细页的Controller,让这个Controller使用这个产品编号从服务器后端获取产品的详细信息就可以了。当然在后面的实现中是不包括从后端获取信息的内容的。这些功能也很容易添加。

    我们在DetailViewController中添加一个产品编号的属性:var productDetail: String!。之后,将这个属性赋值给Controller的title,在页面中展示出来。

    1

    2

    3

    4

    5

    6

    7

    override func viewDidLoad() {

        super.viewDidLoad()

     

        self.view.backgroundColor = UIColor.whiteColor()

         

       <em><strong> self.title = self.productDetail</strong></em>

    }

    了解了具体的展示以后,看看如何在上面说到的方法:func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject?) -> Bool中如何处理页面的跳转,不处理的话只是打开了UINavigationController的rootViewController。

    这样的处理其实也很简单。UINavigationController本来已经是rootViewController了,只要push一下初始化好的DetailViewController就完事大吉了。非常简单。代码:

    1

    2

    3

    4

    5

    6

    7

    8

            if let window = self.window, let rootController = window.rootViewController {

    //            self.window?.rootViewController

                println("window is cool")

                var navController = rootController as! UINavigationController 

                <em><strong>var detailController = DetailViewController()

                detailController.productDetail = itemCode

                navController.pushViewController(detailController, animated: true)</strong></em>

            }

    这样就处理完毕了。打开safari,输入“deeplink://1234567890”,看看运行效果吧:

    so far so good!但是,还有一个bug。重复多次试验就会看到。想想怎么解决吧,就当是课后作业。

    转载于:https://my.oschina.net/JiangTun/blog/729348

    展开全文
  • SendToSafari:一个小型macOS应用程序,用于在Safari中打开所有Chrome标签页
  • <div><p>目前发现的问题 app中打开 目标url中的js操作不生效 在safari中打开就可以 不生效是指: js在页面加载完后获取url中的参数,获取不到</p><p>该提问来源于开源项目:Finb/Bark</p></div>
  • 我希望Web视图中的任何链接都在Safari中打开,而不是在Web视图中打开。 Is this possible? 这可能吗? #1楼 参考:https://stackoom.com/question/CALL/UIWebView在Safari中打开链接 #2楼 The other answers have ...

    本文翻译自:UIWebView open links in Safari

    I have a very simple UIWebView with content from my application bundle. 我有一个非常简单的UIWebView,其中包含我的应用程序包中的内容。 I would like any links in the web view to open in Safari instead of in the web view. 我希望Web视图中的任何链接都在Safari中打开,而不是在Web视图中打开。 Is this possible? 这可能吗?


    #1楼

    参考:https://stackoom.com/question/CALL/UIWebView在Safari中打开链接


    #2楼

    The other answers have one problem: they rely on the action you do and not on the link itself to decide whether to load it in Safari or in webview. 其他答案有一个问题:它们依赖于您执行的操作而不依赖于链接本身来决定是在Safari中还是在Webview中加载它。

    Now sometimes this is exactly what you want, which is fine; 现在有时这正是你想要的,这很好; but some other times, especially if you have anchor links in your page, you want really to open only external links in Safari, and not internal ones. 但有些时候,特别是如果你的页面中有锚链接,你真的只想打开Safari中的外部链接,而不是内部链接。 In that case you should check the URL.host property of your request. 在这种情况下,您应该检查请求的URL.host属性。

    I use that piece of code to check whether I have a hostname in the URL that is being parsed, or if it is embedded html: 我使用那段代码来检查我是否在正在解析的URL中有一个主机名,或者它是否嵌入了html:

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
        static NSString *regexp = @"^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9-]*[a-zA-Z0-9])[.])+([A-Za-z]|[A-Za-z][A-Za-z0-9-]*[A-Za-z0-9])$";
        NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regexp];
    
        if ([predicate evaluateWithObject:request.URL.host]) {
            [[UIApplication sharedApplication] openURL:request.URL];
            return NO; 
        } else {
            return YES; 
        }
    }
    

    You can of course adapt the regular expression to fit your needs. 您当然可以调整正则表达式以满足您的需求。


    #3楼

    If anyone wonders, Drawnonward's solution would look like this in Swift : 如果有人想知道,Drawnonward的解决方案在Swift中会是这样的:

    func webView(webView: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool {
        if navigationType == UIWebViewNavigationType.LinkClicked {
            UIApplication.sharedApplication().openURL(request.URL)
            return false
        }
        return true
    }
    

    #4楼

    In my case I want to make sure that absolutely everything in the web view opens Safari except the initial load and so I use... 在我的情况下,我想确保Web视图中的所有内容都打开Safari,除了初始加载,所以我使用...

    - (BOOL)webView:(UIWebView *)inWeb shouldStartLoadWithRequest:(NSURLRequest *)inRequest navigationType:(UIWebViewNavigationType)inType {
         if(inType != UIWebViewNavigationTypeOther) {
            [[UIApplication sharedApplication] openURL:[inRequest URL]];
            return NO;
         }
         return YES;
    }
    

    #5楼

    Add this to the UIWebView delegate: 将其添加到UIWebView委托:

    (edited to check for navigation type. you could also pass through file:// requests which would be relative links) (编辑以检查导航类型。您还可以传递file://请求,这将是相对链接)

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
        if (navigationType == UIWebViewNavigationTypeLinkClicked ) {
            [[UIApplication sharedApplication] openURL:[request URL]];
            return NO;
        }
    
        return YES;
    }
    

    Swift Version: Swift版本:

    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
            if navigationType == UIWebViewNavigationType.LinkClicked {
                UIApplication.sharedApplication().openURL(request.URL!)
                return false
            }
            return true
        }
    

    Swift 3 version: Swift 3版本:

    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        if navigationType == UIWebViewNavigationType.linkClicked {
            UIApplication.shared.openURL(request.url!)
            return false
        }
        return true
    }
    

    Swift 4 version: Swift 4版本:

    func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebView.NavigationType) -> Bool {
        guard let url = request.url, navigationType == .linkClicked else { return true }
        UIApplication.shared.open(url, options: [:], completionHandler: nil)
        return false
    }
    

    Update 更新

    As openURL has been deprecated in iOS 10: 由于openURL已在iOS 10中弃用:

    - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
            if (navigationType == UIWebViewNavigationTypeLinkClicked ) {
                UIApplication *application = [UIApplication sharedApplication];
                [application openURL:[request URL] options:@{} completionHandler:nil];
                return NO;
            }
    
            return YES;
    }
    

    #6楼

    In Swift you can use the following code: 在Swift中,您可以使用以下代码:

    extension YourViewController: UIWebViewDelegate {
        func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebView.NavigationType) -> Bool {
            if let url = request.url, navigationType == UIWebView.NavigationType.linkClicked {
                UIApplication.shared.open(url, options: [:], completionHandler: nil)
                return false
            }
            return true
        }
    
    }
    

    Make sure you check for the URL value and the navigationType. 确保检查URL值和navigationType。

    展开全文
  • 如果允许Safari在StopTheNews中打开Apple News URL,则原始文章将在Safari中而不是“新闻”应用程序中打开。 如果那是您的默认Web浏览器,StopTheNews也可以与Safari Technology Preview一起使用。 StopTheNews ...
  • 阻止safari跳转appApple’s macOS simultaneously offers the world’s most streamlined default browser, and the world’s most bloated default music player. And one has a bad habit of constantly launching...
    阻止safari跳转app

    阻止safari跳转app

    no-more-itunes

    Apple’s macOS simultaneously offers the world’s most streamlined default browser, and the world’s most bloated default music player. And one has a bad habit of constantly launching the other. If you’re tired of Safari automatically launching iTunes, here’s how to stop it.

    苹果的macOS同时提供了世界上最简化的默认浏览器,以及世界上最ated肿的默认音乐播放器。 一个习惯是不断发射另一个习惯。 如果您对Safari自动启动iTunes感到厌倦,请按以下步骤停止它。

    No More iTunes is a free extension for Safari that stops iTunes from loading when you open an App Store page. It’s quick to install, and works.

    没有更多iTunes是Safari的免费扩展程序,当您打开App Store页面时,它将阻止iTunes加载。 它安装快速且可以正常工作。

    To get started, head to the No More iTunes page. Click the download button.

    要开始使用,请转到No More iTunes页面。 点击下载按钮。

    no-more-itunes-download

    You’ll find the extension in your downloads folder, as a .safariextz file.

    您可以在下载文件夹中找到扩展名为.safariextz的文件。

    nomoreitunes-extension

    To install, simply open the file. You’ll be asked whether you trust the extension.

    要安装,只需打开文件。 系统将询问您是否信任该扩展。

    no-more-itunes-trust

    Click “Trust” and you’re done: the extension is now installed and running. Go ahead and open up any App Store listing. You’ll be happy to note that iTunes will not launch, allowing you to look at the screenshots and other information without opening an entirely new program.

    单击“信任”,您已完成:扩展程序现已安装并正在运行。 继续并打开任何App Store列表。 您会很高兴地注意到iTunes不会启动,从而使您无需打开全新程序即可查看屏幕快照和其他信息。

    no-more-itunes-not-launching

    If you want iTunes, however, you can still launch it: there’s a bar across the top of the window that allows you to do just that, or you can click the blue “View In iTunes” button below the app’s icon. This lets you look at the complete review collection and other information, when you want to.

    但是,如果您想要iTunes,则仍可以启动它:窗口顶部有一个栏,您可以执行此操作,或者您可以单击应用程序图标下方的蓝色“在iTunes中查看”按钮。 这使您可以在需要时查看完整的评论集和其他信息。

    Now that you’re done with that, you can also stop your Play/Pause key from launching iTunes. Then you’ll really never have to see that bloated app again.

    至此 ,您可以停止启动iTunes的“播放/暂停”键了 。 然后,您将真正不必再看到该肿的应用程序。

    翻译自: https://www.howtogeek.com/276399/how-to-stop-itunes-from-launching-when-you-open-app-store-pages-in-safari/

    阻止safari跳转app

    展开全文
  • 微信使用universal link可以直接唤醒app,但是现在需求是右上角通过打开Safari在浏览器访问页面,并实现用URL scheme打开app,跳到指定页?
  • - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType { //判断是否是单击 if (navigationType == ...

    - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:(NSURLRequest*)request navigationType:(UIWebViewNavigationType)navigationType {


        //判断是否是单击


        if (navigationType == UIWebViewNavigationTypeLinkClicked) {


            NSURL *url = [request URL];


            [[UIApplication sharedApplication]openURL:url];


            return NO;


        }


        return YES;


    }


    展开全文
  • - (void) webView :( WebView ... decidePolicyForNewWindowAction:(NSDictionary *)actionInformation ...request:(NSURLRequest *)request newFrameName:(NSString *)...可以从(NSURLRequest *)request 获取url.
  • ios 打开safariThat feeling you get when you close the wrong browser tab by accident is no fun. Fortunately, Safari for iOS, like most modern browsers, provides a way to recover from your little mishap...
  • Safari 打开 URL

    2016-04-12 22:12:48
    本实例实现的功能是 Safari应用程序中打开指定的 URL。当用户单击按钮后,就会弹出分享列表,选择其中的 Open In Safari 动作就会 Safari 中打开指定的 URL。
  • app中的链接到safari中打开

    千次阅读 2015-12-08 10:18:05
    [[UIApplication sharedApplication] openURL:[NSURL URLWithString:inUrl]];
  • iphone的safari中打开,状态栏和导航栏会一直存在,而不会像普通的网页一样,当向下翻动页面的时候导航栏可以自动隐藏。我测试了原生的3-jekyll,也存在相同的问题 不知道这个可以怎么...
  • 相信很多人都有遇到过这样的情况,下面我们来分享无法 Safari 浏览器中打开网站的解决方法。 1.检查页面无法打开时出现的信息。这可能会建议解决问题的方法或包括解决问题时需要的信息。 2.确定您使用的网页地址...
  • 相信很多人都有遇到过这样的情况,下面我们来分享无法 Safari 浏览器中打开网站的解决方法。 1.检查页面无法打开时出现的信息。这可能会建议解决问题的方法或包括解决问题时需要的信息。 2.确定您使用的网页...
  • TOBrowserActivityKit提供了两个UIActivity子类,用于iOS上的Web浏览器应用程序中打开NSURL对象。 特征 支持Mobile Safari和适用于iOS的Chrome浏览器应用程序。 可缩放至iPhone和iPad尺寸。 支持带有支持两种...
  • window.open在Safari浏览器无法打开的解决办法 在回调函数(最常见的就是发送ajax请求成功或者失败回调函数)使用window.open时,在Safari浏览器会无效,原因是Safari的安全机制将其阻挡了。 解决办法 $obj....
  • 大部分现代的浏览器(Chrome/Firefox/IE 10+/Safari)都默认开启了阻止弹出窗口的策略,原因是window.open...在Safari中无法open新窗口,原因是Safari的安全机制将其阻挡。 解决方案:调用Ajax之前,先打开这个窗口.
  • 大部分现代的浏览器(Chrome/Firefox/IE 10+/Safari)都默认开启了阻止弹出窗口的策略,原因是window.open被广告商滥用,严重影响用户的使用。这个阻止弹出窗口的操作,并不是直接封杀window.open(),而是会根据用户...
  • 苹果Mac Safari浏览器中如何设置点按command键新标签页中打开链接?方法很简单,跟着小编一起来看看吧! 1.打开浏览器。 2. Mac 上的 Safari 浏览器应用中,选取“Safari 浏览器”>“偏好设置”。 3.然后...
  • 新窗口中打开许多选项卡的 Safari 扩展 有时我发现自己 Safari 上打开了 15 个以上的标签,也许是打开我刚收到的邮件列表电子邮件中的一些链接之后。 大多数选项卡仅与该电子邮件相关,所以我希望它们位于单独...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,842
精华内容 736
关键字:

在safari中打开