原因及解决方案:
1.uni.startCompass(),一定要绑定在事件上。不能无事件调用,即用户没有操作的情况下调用。
2.授权窗口,在调用uni.startCompass的时候,会自动弹出,无需特殊申请。
3.安卓不受影响 ,可以在无事件的情况下使用。
原因:
ios手机h5需要有方向和动作权限,这个不需要单独申请
权限弹出窗需要触发的事件,比如点击等,不能直接用代码来实现,就比如我是在onLoad里面来startCompass的,这样就不行。
解决方案:
给页面整体增加一个点击事件,事件内容开始兼听
et_startCompass: function () {var that = this;if (that.cmbox.status == 'start') {//即已经开始了return false;}uni.startCompass({success: function (res) {that.cmbox.status = 'start';},complete: function (res) {that.debox.errmsg = JSON.stringify(res);}});uni.onCompassChange(function (res) {that.debox.msg = JSON.stringify(res);that.debox.deg = new Number(res.direction).toFixed(1);that.et_formatDir();});},
当使用uni.startComplass()的时候,会自动弹出此授权窗口
效果如下图: