4

我知道这个问题的变体已经被问了几十次,但我还没有找到一个解决这个组合的问题:我希望能够在 iOS 7 上看到一个不重叠的状态栏,使用 Adob​​e 的 Phonegap Build。

我已将 PhoneGap 状态栏插件添加到我的 config.xml 中:

<gap:plugin name="com.phonegap.plugin.statusbar" version="1.1.0" />

<feature name="StatusBar">
  <param name="ios-package" value="CDVStatusBar" onload="true" />
</feature>

这会导致黑色状态栏正确显示,不与我的网站重叠,但文本(可能)是黑色的,因为我看不到它。

我已经ios-statusbarstyle从 config.xml 中删除了首选项以进行良好的衡量,它似乎没有任何区别。

插件页面提到 PhoeGap 构建不支持 config.xml 选项,所以我尝试使用 StatusBar javascript 对象。这是我完整的 index.html 文件:

<!DOCTYPE html>
<html>
  <head>
    <script type="text/javascript" charset="utf-8" src="cordova.js"></script>
    <script type="text/javascript" charset="utf-8">

      function onLoad() {
          document.addEventListener("deviceready", onDeviceReady, false);
      }

      function onDeviceReady() {
        StatusBar.show();
        StatusBar.overlaysWebView(false);
        StatusBar.backgroundColorByHexString("#C8DB2F");
      }

    </script>
  </head>
  <body onload="onLoad()">
    Test.
  </body>
</html>

但是 backgroundColorByHexString() 函数什么也不做,事实上,似乎根本没有 StatusBar 对象——这可以通过使用 PhoneGap Build 的调试窗口来确认,因为我尝试在这些行之后放置的任何 JS 都不会被执行,所以大概它抛出了一个错误。

关于如何设置状态栏背景颜色或文本颜色的任何想法?我是否必须使用 CLI 而不是 PhoneGapBuild?

4

2 回答 2

2

可能为时已晚......但我使用了你的确切代码,它适用于我在 phonegap 构建上的应用程序。我改用这个插件。

<gap:plugin name="org.apache.cordova.statusbar" version="0.1.4" />

这将调用 onDeviceReady 函数:

// wait for phonegap to be ready
document.addEventListener('deviceready', onDeviceReady, false);
于 2015-01-26T02:27:01.160 回答
0

我注意到 JS 在使用PhoneGap Developer App进行测试时有效,但在 iOS 模拟器中无效(即cordova emulate ios从命令行运行时)。进一步测试,似乎deviceready在 iOS 模拟器中事件根本不会触发。

谷歌搜索“phonegap deviceready not fire”给了我类似的错误报告,尽管它们都得到了神秘的解决,通常是通过重新安装或修复错字。

一个切线有用的答案指出问题可能出在插件上。特别是文件插件。我没有使用 File 插件,但我检查了模拟器的 system.log,它给了我一些与插件有关的错误:

Sep 12 10:26:58 username.local MyApp[8218] <Warning>: ERROR: Plugin 'StatusBar' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.
[…]
Sep 12 10:26:58 username.local MyApp[8218] <Warning>: ERROR: Plugin 'Device' not found, or is not a CDVPlugin. Check your plugin mapping in config.xml.

所以我删除了所有项目的插件,然后重新添加了它们。我检查了重新安装前后的版本,虽然版本相同:

org.apache.cordova.console 0.2.10 "Console"
org.apache.cordova.device 0.2.11 "Device"
org.apache.cordova.geolocation 0.3.9 "Geolocation"
org.apache.cordova.statusbar 0.1.7 "StatusBar"

再次运行模拟器,deviceready事件被触发并且状态栏颜色改变了!


所以,总结一下:你使用什么插件,你有没有尝试重新安装它们?

于 2014-09-12T07:51:56.297 回答