LoginSignup
0
2

More than 5 years have passed since last update.

Ionicでibeaconを使ったアプリを作る

Last updated at Posted at 2018-08-13

IonicでiBeaconを利用したアプリを作るためにはCordovaのibeaconプラグイン(cordova-plugin-ibeacon)をtypescriptでラップしたモジュールを利用する必要がある。
詳細はionicの下記ページに記載してある。
https://ionicframework.com/docs/native/ibeacon/

  1. プロジェクト配下で以下のコマンドを実行する

    ionic cordova plugin add cordova-plugin-ibeacon
    npm install --save @ionic-native/ibeacon
    
  2. app.module.tsに以下を追加

    ...
    
    import { IBeacon } from '@ionic-native/ibeacon';
    
    ...
    
    providers: [
      StatusBar,
      SplashScreen,
      IBeacon,
      {provide: ErrorHandler, useClass: IonicErrorHandler}
    ]
    
    ...
    
  3. 対象のクラスのimportとConstructorとmethodを追加

    ...
    import { IBeacon } from '@ionic-native/ibeacon';
    ...
    export class ConfigPage {
      delegate:any;
      region:any;
      constructor(public navCtrl: NavController, private ibeacon: IBeacon) {
      }
      startScan(){
        console.log("initScanner!");
        this.ibeacon.requestAlwaysAuthorization()
        this.ibeacon.requestWhenInUseAuthorization()
    
        this.delegate = this.ibeacon.Delegate()
        this.delegate.didChangeAuthorizationStatus().subscribe(data=>console.log('didChangeAuthorizationStatus has completed', JSON.stringify(data)))
    
        this.delegate.didRangeBeaconsInRegion().subscribe(data => {
            console.log('didRangeBeaconsInRegion:', JSON.stringify(data,null,4))
            // console.log(data.beacons[0].rssi);
          },
          error=> console.log('didRangeBeaconsInRegion Error: ', error))
    
        this.delegate.didStartMonitoringForRegion().subscribe(data=>console.log('didStartMonitoringForRegion:',JSON.stringify(data),error=>console.log(error)))
        this.region = this.ibeacon.BeaconRegion('test.beacon','B9407F30-F5F8-466E-AFF9-25556B57FE6D');
    
        this.ibeacon.startMonitoringForRegion(this.region).then(
          () => console.log('Native layer received the request to monitoring:',JSON.stringify(this.region)),
          error => console.log('Native layer failed to begin monitoring: ', error))
    
        this.delegate.didEnterRegion().subscribe(data => {
            console.log('didEnterRegion: ', data);
        });
    
        this.delegate.didExitRegion().subscribe(data => {
          console.log('didExitRegion: ', data);
        });
      }
    }
    
  4. 実行する

    ionic cordova run android --device
    
  5. methodを実行するとdidEnterRegionとdidExitRegionがバックグラウンドから呼ばれるようになる。

デバッグをするときは、実行中にchromeのアドレス欄にchrome://inspect/#devicesを入れて画面下部のinspectボタンを押すとchrome上でできるようになる。

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2