首页 >> 大全

离子学入门:Cordova

2023-09-10 大全 34 作者:考证青年

最终产品图片

您将要创造的

在“ Ionic入门”系列的最后一部分中,您将学习如何利用向您的应用程序添加设备硬件功能。 我们将研究如何使用地理定位等功能,并向您展示如何与库集成以完成我们的应用程序。 在开始之前,您将需要确保已为Ionic设置了机器 ,并确保还设置了特定于平台的工具。

项目文件

教程项目文件位于上 。 该应用程序的一般前提是它显示有关您附近设施的一些信息。 在本教程中,我们添加了查找当前位置并显示您附近的结果的功能。 您可以在此处查看工作示例 。

如果克隆项目,则还可以使用Git并运行git –b start编码。 本课程的编码从最后的帖子“ Ionic入门:导航”开始。 您还可以实时预览起点 。

设置科尔多瓦

在编写任何代码之前,我们需要设置我们的项目。 Ionic已经建立了一个基本的项目,但是我们需要自己初始化一些其他内容。

首先,我们需要安装库。 这是一个模块,它使使用一些最流行的插件更加容易。 (尽管并非支持所有插件。) Bower用于安装此依赖项。

其次,我们需要为项目添加一个平台。 这将是ios或 (或两者都是!),具体取决于您选择支持的平台。 我在示例中使用了ios ,但是您可以将其替换为以在该平台上实现相同的功能。

第三,我们将为安装地理定位插件 。 这样可以增强您的应用程序的功能,使其能够获取用户的当前位置(需要获得许可)。 您可以在上看到所有插件的列表,以及有关如何设置每个插件的详细信息。

应从项目的根目录运行以下命令,以执行这三个设置步骤。

node_modules/.bin/bower install ngCordova
ionic platform add ios # or android
ionic plugin add cordova-plugin-geolocation

完成后,我们需要将添加到应用程序中,以便Ionic可以识别它。 打开www / index.html文件,并在ionic..js文件之后添加以下行。

然后,我们需要更新www / js / app.js文件以包含模块。 第一行应更新为如下所示。

angular.module('App', ['ionic', 'ngCordova'])

既然我们已经更新了依赖关系,我们的项目就可以使用插件了。 下一步是设置一个新视图以开始使用它!

添加位置视图

我们将为该应用创建一个新的登录屏幕。 此屏幕显示有关使用用户的当前位置查找附近地点的消息。 他们将点击一个按钮以确认他们希望该应用访问其位置,然后查看反映其当前位置的位置列表。

用户位置数据是一个隐私问题,应用程序在收集时应格外小心,因此移动设备不允许应用程序自动访问地理位置数据。 应用必须请求权限(可以随时拒绝或撤销权限),因此在使用某些需要权限的插件时,请记住这一点。 (请谨慎使用该数据,并避免侵犯用户的隐私!)

首先,我们将为位置视图创建模板。 在www / views / / .html创建一个新文件,并包含以下内容。 (这在以前的教程中都应该很熟悉,但是实际上它创建了一个带有按钮的新视图,该按钮将调用控制器中的方法,接下来将对其进行定义。)

Set your current location, it is only accessed by pressing the button below.

现在,我们将创建控制器外壳,然后添加一个方法来处理获取用户的位置。 在www / views / / .js中创建另一个新文件,并包含以下代码。 确保还链接到www / index.html文件中的该文件。

angular.module('App')
.config(function($stateProvider) {$stateProvider.state('location', {url: '/location',controller: 'LocationController as vm',templateUrl: 'views/location/location.html'});
})
.controller('LocationController', function($ionicLoading, $http, $state, Geolocation, $cordovaGeolocation, $ionicPopup) {var vm = this;
});

此时,我们有了一个新的位置视图,但是该按钮暂时还无法使用。 您可以使用ionic serve在浏览器中预览应用程序。 如果您转到http:// :8100 /#/ ,则应该能够看到该视图。

离子怎么学_离子课程_

您会注意到控制器构造函数中的一项名为$的服务,该服务将为我们提供对用户位置数据的访问。 注入的其余服务仅用于处理与位置数据有关的业务逻辑。

在此应用中获取用户位置实际上涉及两个步骤,首先是从插件(仅返回纬度和经度值)获取地理位置数据,然后在 API中进行反向查找以找到当前位置(与我们的其他API调用配合使用)。

将以下方法添加到控制器,我们将在下面详细介绍它。

vm.useGeolocation = function() {$ionicLoading.show();$cordovaGeolocation.getCurrentPosition({timeout: 10000, enableHighAccuracy: false}).then(function (position) {var lat  = position.coords.latitude;var lng = position.coords.longitude;var url = 'https://civinfo-apis.herokuapp.com/civic/geolocation?latlng=' + lat + ',' + lng;$http.get(url).then(function(response) {$ionicLoading.hide();if (response.data.results.length) {Geolocation.data = response.data.results[0];$state.go('places');} else {$ionicPopup.alert({title: 'Unknown location',template: 'Please try again or move to another location.'});}}).catch(function(error) {$ionicLoading.hide();$ionicPopup.alert({title: 'Unable to get location',template: 'Please try again or move to another location.'});});});
};

第一件事是在检测到当前位置时使用$服务显示加载程序。

然后,我们使用$服务,该服务具有一种名为的方法来获取当前位置。 我们指定选项,它们是合理的默认值。 您可以在文档中了解其他选项 。

方法返回一个 ,因此我们使用then来处理响应。 假设用户同意分享他们的位置,它将为我们提供一个包含纬度和经度坐标的对象。 然后,我们将使用这些值来调用API进行反向地址解析,以查找最近的位置。 如果失败,则catch处理程序将使用$显示失败通知。

$http服务用于查找反向地理编码,如果成功,我们需要检查是否返回了任何结果。 如果找到一个,则服务值将更新,并使用$state.go将用户重定向到位置列表。 否则,它将使用$显示警告,提示未找到任何地方。

_离子课程_离子怎么学

我们要做的就是在我们的应用程序中启用设备的地理位置功能。 但是,我们仍然必须对地方视图和app.js文件进行一些小的调整。

首先打开www / js / app.js文件,然后将服务更新为以下内容。 这对于清除我们以前硬编码到的地理位置服务的默认值是必要的,并使摘要周期能够正确同步更改。

离子课程_离子怎么学_

.factory('Geolocation', function() {return {data: {}};
})

然后,通过将最后一个配置行更新为以下内容,为应用程序应用程序修改默认视图。 这将使该应用开始在位置视图上启动。

.config(function($urlRouterProvider) {$urlRouterProvider.otherwise('/location');
})

最后,我们希望将位置视图调整为不再缓存(因此始终反映更新的位置),如果找不到位置,则重定向到位置视图。 打开www / views / / .html并更新第一行,如下所示。

然后打开www / views / / .js并更新控制器的启动以匹配以下内容。

.controller('PlacesController', function($http, $scope, $ionicLoading, $ionicHistory, $state, Geolocation, Types) {var vm = this;if (!Geolocation.data.geometry || !Geolocation.data.geometry.location) {$state.go('location');return;}var base = 'https://civinfo-apis.herokuapp.com/civic/places?location=' + Geolocation.data.geometry.location.lat + ',' + Geolocation.data.geometry.location.lng;

我们会在控制器点火之前进行快速检查,以检测是否找到了地理位置,如果没有找到,我们将重定向到该位置以进行重置。

_离子课程_离子怎么学

实际上,这也将在您的浏览器中起作用,因为该浏览器支持地理位置功能。 在下一节中,我们将简要讨论如何在模拟器中预览应用程序。

在仿真器中预览

Ionic CLI具有一个命令,可让您轻松地在设备的软件版本中模拟应用程序。 并非所有硬件功能都可用,但是许多功能都可以仿真,包括地理位置。

使用ionic ios ,Ionic将启动模拟器并加载应用程序(与类似)。 如果有错误,则可能是您的计算机尚未针对您要模拟的平台进行完整设置。

该命令将引导平台操作系统的实际版本,并模拟非常逼真的设备。 对于没有可用于测试的实际设备的人,这是一种快速验证不同设备可与您的应用配合使用的好方法。

有时您可能需要重置模拟器,以确保所做的更改不会持久。 例如,如果您拒绝应用程序的地理位置许可,则可能必须找到设置以供以后使用,或者您可以重置模拟器以删除任何设置。

结论

在本教程中,我们研究了如何使用创建利用硬件功能和传感器的应用程序。 使用,可以在Ionic应用程序中轻松访问此信息。 现在,您可以使用设备功能,例如照相机,地理位置,指纹读取器和日历。 在可能的情况下,您应该利用库来简化集成,但是并未公开其他插件。

这也结束了《 Ionic入门》系列 。 您现在应该掌握基础知识,并能够继续使用Ionic。 如果您对更多内容感兴趣,请查看有关ionic框架的其他一些课程和教程。

翻译自:

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了