質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

0回答

1982閲覧

Swift ibeacon受信アプリで受信したらメッセージを出したい

退会済みユーザー

退会済みユーザー

総合スコア0

Xcode

Xcodeはソフトウェア開発のための、Appleの統合開発環境です。Mac OSXに付随するかたちで配布されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2019/07/28 06:40

編集2019/07/31 10:39

前提・実現したいこと

iPhoneでiBeaconを受信してメッセージを出したいです。
プログラム事態にエラーメッセージなどは無いのですが、なぜか、メッセージが表示されません。

func locationManager(_ manager: CLLocationManager, didDetermineState state: CLRegionState, for inRegion: CLRegion) {
このプログラムから動いていなく、switch文から動いていない状況です。
swift Xcode

該当のソースコード

ソースコード

import UIKit import CoreLocation class ViewController: UIViewController, CLLocationManagerDelegate { @IBOutlet weak var status: UILabel! //beaconの値取得関係の変数 var trackLocationManager : CLLocationManager! var beaconRegion : CLBeaconRegion! override func viewDidLoad() { super.viewDidLoad() // ロケーションマネージャを作成する trackLocationManager = CLLocationManager(); // デリゲートを自身に設定 trackLocationManager.delegate = self; // BeaconのUUIDを設定 let uuid:UUID? = UUID(uuidString: "9cdc16d0-f9ea-4eba-8db9-0ec18844a76b") //Beacon領域を作成 beaconRegion = CLBeaconRegion(proximityUUID: uuid!, identifier: "net.noumenon-th") // セキュリティ認証のステータスを取得 let status = CLLocationManager.authorizationStatus() // まだ認証が得られていない場合は、認証ダイアログを表示 if(status == CLAuthorizationStatus.notDetermined) { trackLocationManager.requestWhenInUseAuthorization() } } //位置認証のステータスが変更された時に呼ばれる func locationManager(_ manager: CLLocationManager, didChangeAuthorization status: CLAuthorizationStatus) { //観測を開始させる trackLocationManager.startMonitoring(for: self.beaconRegion) } //観測の開始に成功すると呼ばれる func locationManager(_ manager: CLLocationManager, didStartMonitoringFor region: CLRegion) { //観測開始に成功したら、領域内にいるかどうかの判定をおこなう。→(didDetermineState)へ trackLocationManager.requestState(for: self.beaconRegion) } //ここまでは動いている。 //領域内にいるかどうかを判定する func locationManager(_ manager: CLLocationManager, didDetermineState state: CLRegionState, for inRegion: CLRegion) { switch (state) { case .inside: // すでに領域内にいる場合は(didEnterRegion)は呼ばれない trackLocationManager.startRangingBeacons(in: beaconRegion) // →(didRangeBeacons)で測定をはじめる break case .outside: // 領域外→領域に入った場合はdidEnterRegionが呼ばれる break case .unknown: // 不明→領域に入った場合はdidEnterRegionが呼ばれる break } } //領域に入った時 func locationManager(_ manager: CLLocationManager, didEnterRegion region: CLRegion) { // →(didRangeBeacons)で測定をはじめる self.trackLocationManager.startRangingBeacons(in: self.beaconRegion) status.text = "didEnterRegion" } //領域から出た時 func locationManager(_ manager: CLLocationManager, didExitRegion region: CLRegion) { //測定を停止する self.trackLocationManager.stopRangingBeacons(in: self.beaconRegion) status.text = "stop" } //観測失敗 func locationManager(_ manager: CLLocationManager, monitoringDidFailForRegion region: CLRegion) { status.text = "error" } //領域内にいるので測定をする func locationManager(_ manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], in region: CLBeaconRegion){ /* beaconから取得できるデータ proximityUUID : regionの識別子 major : 識別子1 minor : 識別子2 proximity : 相対距離 accuracy : 精度 rssi : 電波強度 */ } }

こちらのプログラムはhttps://qiita.com/nwatabou/items/be08d79341bb5721239fをもとにしました。

試したこと

メッセージの宣言の位置を変えたりしました。

補足情報(FW/ツールのバージョンなど)

Swift 5.0.1
10.2.1 (10E100)
iPhone5s 12.3.2

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

fuzzball

2019/07/30 07:38

現状どこまで動いているのか書いて下さい。(どのデリゲートメソッドが呼ばれているのか、呼ばれていないのか、など)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問