iOS - 使用Phonegap作为iBeacon做广告

时间:2016-05-18 12:15:55

标签: cordova plugins ibeacon

有没有人使用过cordova / phonegap成功使用iOS设备作为iBeacon做广告?我已经使用本机应用程序完成了它(airLocate是一个很好的演示应用程序来做到这一点)。我想做的是使用phonegap / cordova插件做广告。

我有以下插件:https://github.com/petermetz/cordova-plugin-ibeacon    使用这个插件,我已成功监控信标,成功进行了信标测试,但我无法做广告。我使用了以下代码(来自该网站):

var uuid = '00000000-0000-0000-0000-000000000000';
var identifier = 'advertisedBeacon';
var minor = 2000;
var major = 5;
var beaconRegion = new cordova.plugins.locationManager.BeaconRegion(identifier, uuid, major, minor);

// The Delegate is optional
var delegate = new cordova.plugins.locationManager.Delegate();

// Event when advertising starts (there may be a short delay after the request)
// The property 'region' provides details of the broadcasting Beacon
delegate.peripheralManagerDidStartAdvertising = function(pluginResult) {
    console.log('peripheralManagerDidStartAdvertising: '+ JSON.stringify(pluginResult.region));
};
// Event when bluetooth transmission state changes 
// If 'state' is not set to BluetoothManagerStatePoweredOn when advertising cannot start
delegate.peripheralManagerDidUpdateState = function(pluginResult) {
    console.log('peripheralManagerDidUpdateState: '+ pluginResult.state);
};

cordova.plugins.locationManager.setDelegate(delegate);

// Verify the platform supports transmitting as a beacon
cordova.plugins.locationManager.isAdvertisingAvailable()
    .then(function(isSupported){

        if (isSupported) {
            cordova.plugins.locationManager.startAdvertising(beaconRegion)
                .fail(console.error)
                .done();
        } else {
            console.log("Advertising not supported");
        }
    })
    .fail(function(e) { console.error(e); })
    .done();

此代码成功运行,但不会做广告。我使用过信标扫描仪,但它没有拿起它。我运行代码来检查它是否是广告,但它总是回来是假的:

cordova.plugins.locationManager.isAdvertising()
.then(function(isAdvertising){
    console.log("isAdvertising: " + isAdvertising);
})
.fail(function(e) { console.error(e); })
.done();

我也通过以下方法请求用户许可:

cordova.plugins.locationManager.requestWhenInUseAuthorization(); 

那么,有没有人成功完成这项工作?我没有想法,希望那里有人做过,至少可以让我知道它是可能的(相对容易)。 :)

谢谢!

1 个答案:

答案 0 :(得分:2)

所以我终于得到了ibeacon插件问题部分的答案。你可以在这里看到答案 - 感谢cgewecke的回答:

https://github.com/petermetz/cordova-plugin-ibeacon/issues/231

但基本上,您需要在xcode中启用“位置更新”(在使用cordova构建它之后)。转到项目(常规设置所在的位置),然后转到功能 - >背景模式 - >单击“位置更新”。