用Ionic包装Angular2应用程序 - 地理位置问题

时间:2016-10-21 00:54:13

标签: ios angular ionic-framework geolocation ionic2

我有一个现有的,响应式的Angular 2应用程序,我想用Ionic包装并部署到app store。该应用程序将在两个Web浏览器上运行,并作为 iOS和Android 上的本机应用程序运行。

我现在已经解决了这个问题,但有一个问题。我需要在我的第一个屏幕上使用geolocation,我的网络应用会按照您的预期navigator.geolocation.getCurrentPosition执行此操作。这在网络中效果很好,要求用户获得权限,然后执行geolocation

在iOS版本中,在cordova-plugin-geolocation中标记后,我可以弹出一条消息以允许地理定位,但此消息使用长路径

  

( “/变种/容器/束/应用/ {{GUID}} / {{APPNAME}} / WWW / index.html中”   想用你当前的位置。)

这看起来很hacky和业余,老实说,我可能会删除任何给我这样的消息的应用程序。我试图找出如何让这个消息只是说我的应用程序的名称。以下是我尝试过的一些事情......

  
      
  • NSLocationWhenInUseUsageDescription及其变体添加到我的plist文件中。这导致我收到应用程序的消息   首先命名,然后获取带路径的第二条消息。
  •   
  • 在我的angular 2应用程序中导入'ionic-native'并尝试使用Geolocation作为包装 - 无需更改
  •   
  • 等待“deviceready”事件进行地理定位 - 无需更改
  •   
  • 在进行地理定位之前使用setTimeout设置长延迟(最多30秒) - 无需更改
  •   

我讨厌我必须有两个代码库才能通过应用商店分销渠道部署一个简单的网络应用程序。当然有一些解决方法,我还没有想到。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

所以,事实证明这有点简单。构建的index.html文件只需要有离子javascript引用,如下所示:

<script src="lib/ionic/js/ionic.bundle.js"></script>
<script src="cordova.js"></script>

我修改了我的gulp文件,该文件由webpack build for ionic处理,在关闭头标记之前将它们抛出,现在我对地理定位的调用与正确的消息传递有关。

navigator.geolocation.getCurrentPosition((pos) => { 
   //do things with pos
});