[概要]プログラムの量を減らすことができ、また多くの時間節約、作業負荷を軽減することができないだけで、プログラムの包装方法のために重要です。
[実施例1]と要求許可チェック(単一のコールバック)
コード:Util.jsでの書き込みは、次のような方法のmodule.exportsはを、追加する必要があります。
module.exports = {
formatTime: formatTime,
checkPermisson:checkPermisson,
getPermission: getPermission,
openSetting: openSetting,
getAddress:getAddress
}
/**检查是否获得权限 */
function checkPermisson(obj,callback) {
wx.getSetting({
success(res) {
if (!res.authSetting[obj]) {
return typeof callback == "function" && callback(false);
}else{
return typeof callback == "function" && callback(true);
}
}
})
}
/**获取权限 */
function getPermission(per){
wx.authorize({
scope: per,
success() {
return typeof callback == "function" && callback(true);
},fail(res){
console.log(res)
return typeof callback == "function" && callback(false);
}
})
}
言った:checkPermisson使い捨て、ポップアップ許可要求をチェックし、必要なすべての権限を追加することによりたかっ追加されませんでしたが、アプレット要求されたユーザ情報が自動的にポップアップ表示されていないので、それをチェックし許可は、別途許可を要求した場合、直接リターンtrueまたはfalseそうそれはすることができます。
上記の方法を使用します:
//获取用户信息
util.checkPermisson("scope.userInfo", function (res) {
if (!res) {
console.log("未授权获取用户信息")
//显示用户信息权限请求
that.setData({
info_per:false
})
}else{
console.log("已经获取用户权限")
}
});
〔実施例2〕、地理的座標及びロケーション記述を取得要求(伝達関数コールバック)
説明:小さなアプレットプログラム座標API機器を得ることができ、あなたがそれを取得したいのような他の地理的説明によってれる:高地ドイツ語、唐徐、Baiduは、APIをマッピングし、その取得方法は、第1の取得地理座標のgetAddressによって記述しました、そして次に説明位置を取得します
//腾讯地图api
var QQMapWX = require('./qqmap-wx-jssdk.min.js');
// 实例化API核心类
var demo = new QQMapWX({
key: 'RT2BZ-ZD2KK-C35JO-****-WZFLH-SYBKB' // 必填
});
/**获取地理坐标 */
function getAddress(callback){
wx.getLocation({
type: 'wgs84',
success(res) {
const latitude = res.latitude
const longitude = res.longitude
return retrunAddress(latitude, longitude,callback);
}
})
}
/**根据坐标获得位置描述 */
function retrunAddress(latitude,longitude,callback){
demo.reverseGeocoder({
location: {
latitude: latitude,
longitude: longitude
},
success: function (res) {
},
fail: function (res) {
console.log(res);
},
complete: function (res) {
console.log(res);
return typeof callback == "function" && callback(res);
}
})
使用方法:
//获取用户地理位置
util.checkPermisson("scope.userLocation", function (res) {
if (res) {
// console.log("以获取位置")
util.getAddress(function (callback){
// console.log(callback)
var add = callback.result.address_component.district + callback.result.address_component.street_number;
var mHeader = that.data.header;
mHeader.address = add;
// console.log(mHeader)
that.setData({
header:mHeader
})
})
} else {
util.getPermission("scope.userLocation",function (res){
if(!res){
wx.showToast({
title: '请打开设置页面',
})
util.openSetting()
}else{
}
});
}
})