标签: iphone-standalone-web-app

iOS"添加到主屏幕" - 文件下载将用户踢出

我需要一个有效的会话才能从我的网络应用程序下载文件.

当我在iOS设备上打开我的网络应用程序,登录并尝试从我的网站下载文件(PDF)时,我被踢出去并在Safari中打开链接.用户必须再次从Safari登录才能下载页面.

如何强制文件在Web应用程序中打开并在那里触发下载表单?

我正在使用Carrierwave,在控制器中我有这个触发下载:

class DocumentsController < ApplicationController

  # .. code omitted
  def download
    if @document.name.file.exists?
      send_file @document.name.path, x_sendfile: true
    else
      redirect_to documents_url, notice: t(:file_not_found)
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

更新:我发现半工作解决方案直接在浏览器中打开文件:

$(document).ready ->
  if 'standalone' of window.navigator and window.navigator.standalone
    # For iOS Apps
    $('a').on 'click', (e) ->
      e.preventDefault()
      new_location = $(this).attr('href')
      if new_location != undefined and new_location.substr(0, 1) != '#' and $(this).attr('data-method') == undefined
        window.location = new_location
      return
  return
Run Code Online (Sandbox Code Playgroud)

通过使用此代码片段,我们强制iOS用户以全屏模式(Web应用程序)运行,以打开a应用程序内的所有链接.但问题是,如果用户打开文件,则不会出现"后退"按钮.由于iPhone用户缺少物理后退按钮,他们将不得不强制重启整个应用程序以退出显示的文件.

ruby-on-rails download ios carrierwave iphone-standalone-web-app

6
推荐指数
1
解决办法
461
查看次数

iOS 11 - 独立的Web应用程序链接打开默认是否反转?(在Web应用程序中处理PDF显示.)

阻止独立网络应用中的链接在移动版Safari中打开有很多流量,但引用的iOS版本要早得多(7-9?).在iOS 11中,我遇到了相反的问题:在我的独立Web应用程序中,我有指向需要显示的PDF文件的链接.当我点击它们时,无论我给出了什么选项,它们都会在Web应用程序浏览器内打开而不是在Safari内部打开.由于独立模式,结果是Web应用程序中的死胡同,需要重新启动应用程序.(Android似乎做了正确的事情并转移到pdf查看应用程序.)

单击处理程序(javascript/bootstrap/jquery):

function openDocument(docURL) {
    window.open(docURL,'_blank');
    return false;
}
Run Code Online (Sandbox Code Playgroud)

或者,可以为新页面打开Web应用程序内的导航,以便我可以避免死路一条吗?(我认为没有,因为我正在阅读;我已经尝试了一些选项来开窗.打开无济于事.)或者是否有可能以某种方式组合一个(多页)pdf查看器和一个用于解雇的UI元素?建议欢迎.

编辑:总结下面的讨论,iOS在独立的Web应用程序中处理内部和外部链接的方式不同.通过在服务器端重新映射使链接看起来是外部的,允许链接强制Safari打开.

javascript ios iphone-standalone-web-app progressive-web-apps

6
推荐指数
1
解决办法
1618
查看次数

从iPhone上的全屏网络应用程序启动移动Safari

我在一些变体中搜索了这个问题,只能在使用PhoneGap或jQuery mobile的环境中找到答案.但是,我既不使用...只是简单的旧HTML和JavaScript.

我正在尝试使用window.open()从全屏web应用程序启动移动Safari,而不是内联锚.无论我做什么,网址都会在网页应用中打开,而不是在Safari中.有没有人有什么建议?

谢谢.

javascript iphone iphone-standalone-web-app

5
推荐指数
1
解决办法
2491
查看次数

在 iOS Web 应用程序中启用“保存图像”

将其添加到我的网站:

<meta name="apple-mobile-web-app-capable" content="yes">
Run Code Online (Sandbox Code Playgroud)

虽然大多数人询问如何在全屏网络应用程序中禁用标注,但我需要启用它。

我基本上会有一个包含 iPhone 壁纸的滑块,因此我希望用户能够保存图像,就像他们在常规 Safari 中所做的那样。

这是我的演示,您需要将其添加到主屏幕,然后从那里打开它。保存图像被禁用 - 为什么?

这可能吗?

注意:指定-webkit-touch-callout: inherit;不会执行任何操作。

iphone-web-app ios iphone-standalone-web-app

5
推荐指数
1
解决办法
1766
查看次数

iOS WebApp不允许定位服务?

我有以下JS获取用户的当前位置并显示其邮政编码...

(function ($, geolocation) {
    if (geolocation) {
        geolocation.getCurrentPosition(function (position) {
            $.getJSON(
                "http://ws.geonames.org/findNearestAddressJSON?callback=?",
                {
                    lat : position.coords.latitude,
                    lng : position.coords.longitude
                },
                function (data) {
                    $(function () {
                        $('#zip').text(data.address.postalcode);
                    });
                }
            );
        });
    }
}(jQuery, navigator.geolocation));
Run Code Online (Sandbox Code Playgroud)

在CodeReview上提供了帮助,因为我的原始代码非常糟糕,https://codereview.stackexchange.com/questions/13481/to-use-or-not-to-use-public-variables-in-javascript/13483#comment21844_13483

HTML:

<div id="zip"></div>
Run Code Online (Sandbox Code Playgroud)

...然后在div中显示邮政编码.

这在Mobile Safari和桌面Safari中都可以正常工作,但是一旦添加apple-mobile-web-app-capable元标记,代码就会中断.

我在每个步骤后都将代码记录到控制台,并且它在常规Safari和Mobile Safari中运行顺畅.一旦我将它添加到我的主屏幕(头部带有元标记),应用程序甚至不会运行JS代码.它也没有记录到控制台,这让我想知道WebApps中是否允许使用位置服务.

如果从主屏幕运行时重新加载页面也会发生此问题.

有没有什么办法解决这一问题?这是个常见的问题吗?

javascript iphone jquery ios iphone-standalone-web-app

5
推荐指数
1
解决办法
3774
查看次数

如何在IOS主屏幕Web应用程序中加载数据uri链接?

如果我在运行6.1.2的iPad上打开Safari中的以下页面,点击第一个链接会打开一个带有"Hello World!"的新标签页,第二个链接会加载"Hello Again!" 在iframe中.

<html>
  <head>
    <meta name="apple-mobile-web-app-capable" content="yes" />
  </head>
  <body>
    <p>
      <a href="data:text/plain,Hello World!" target="_blank">data: uri new tab test</a>
    </p>
    <p>
      <a href="data:text/plain,Hello Again!" target="dataframe">data: uri iframe test</a>
    </p>
    <iframe name="dataframe" width="500" height="100"></iframe>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

如果我将此页面添加到主屏幕,则在生成的应用程序中,链接不执行任何操作.

是否有任何方法可以在IOS主屏幕Web应用程序中加载数据URI链接,方法是加载Safari以显示内容,或者以某种方式嵌入它?

或者可能是主屏幕Web应用程序本地存储和显示PDF的其他方法.

data-uri iphone-standalone-web-app

5
推荐指数
0
解决办法
486
查看次数

Google+登录为空白页面iOS网络应用程序

使用iOS网络应用视图时,我在使用Google+ API中的互动帖时遇到问题.在Safari或iOS或Android上的任何其他浏览器中,登录Google+并分享帖子没有问题,但在iOS的网络应用模式下,只要您填写凭据并点击Google登录上的"登录",就会抛出白页它在页面中给你.

我用它来定义移动Web视图:

<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-touch-fullscreen" content="yes">
Run Code Online (Sandbox Code Playgroud)

有没有人有这方面的经验?

ios google-plus iphone-standalone-web-app

5
推荐指数
0
解决办法
506
查看次数

视频不再在iOS 8 WebbApp独立模式下播放,有人找到了解决方案吗?

从iOS 9开始,此错误似乎已得到解决.


该视频在桌面常绿浏览器上播放,在Android设备上以独立模式播放.

它甚至可以在iOS8 Safari上播放,但是一旦用户将其添加到主屏幕,视频就不再播放了.

我在这里举了一个例子http://bugs.readingplus.com/ios8-video-test/.

如果您使用iOS8,则可以播放视频,将网址添加到主屏幕并加载.您将获得控件,但是一旦您触摸播放,您获得的就是第一帧.

我把页面源代码放在Github上,或者你可以转到页面查看源代码.

我错过了什么,我的标记是否满足,这只是一个错误,是否有人找到了解决方法?


从iOS 8.3开始,该问题已得到部分解决.我已经验证了该示例中的视频现在在从"添加到主屏幕"链接启动时播放.

剩下的问题是音频,它没有被渲染/播放.

safari video ios iphone-standalone-web-app ios-standalone-mode

5
推荐指数
1
解决办法
909
查看次数

Web 应用程序清单:“start_url”不适用于 Safari

“START_URL”适用于Android的浏览器,但对于iPhone,Safari浏览器总是使用当前页面的URL,而忽略了“START_URL”

例如,当前页面是https://test.com/index.html,清单上的"start_url"设置为"start_url": "index.html?flag=1",但是当页面添加到Safari 上的主屏幕,它仍然使用https://test.com/index.html,没有参数。

有没有办法应用不同的 URL 作为 Safari 的启动 URL?

safari manifest ios iphone-standalone-web-app

5
推荐指数
1
解决办法
1935
查看次数

Safari Mobile / 从独立 PWA 强制打开新窗口

有一个以独立模式运行的 Web 应用程序,具有以下 manifest.json

{
 "lang": "de",
 "name": "Test.App",
 "short_name": "Test.App",
 "start_url": "/36485/",
 "display": "standalone",
 "theme_color": "#FF4500",
 "background_color": "#FFFFFF",
 "icons": [...]
}
Run Code Online (Sandbox Code Playgroud)

此模式下没有浏览器 UI,因此必须在新的 Safari 窗口中打开文档(如 pdf、文档等)。这让我想到一个问题:如何强制 Safari 打开一个新的浏览器窗口?我们现在找到的解决方案是给它一个不同的域名(!!),即。一个子域。所有其他选项 - 无论是它window.open还是taget=_blank- 都没有任何效果,所有链接都将在同一个独立窗口中打开,因此无法返回到实际的应用程序界面。外部域似乎可以解决问题。是否有任何解决方法可以避免使用子域?也许通过清单中的一些定义?

manifest mobile-safari iphone-standalone-web-app progressive-web-apps

5
推荐指数
0
解决办法
1248
查看次数