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

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

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

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

Q&A

0回答

2159閲覧

iBeaconのアプリを実装させたいのですがエラーが出ます

Kazu1100

総合スコア6

Swift

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

0グッド

0クリップ

投稿2017/09/26 03:06

###前提・実現したいこと
swift初学者です。iBeaconを利用して送信端末、受信端末が5mになると通知が来るアプリを作りたいのですがうまくいきません。
###エラー箇所
switch (CLLocationManager?.authorizationStatus)! {
case .Authorized, .authorizedWhenInUse:
//iBeaconによる領域観測を開始する
print("観測開始")
self.status.text = "Starting Monitor"
self.manager.startRangingBeacons(in: self.region)
case .notDetermined:
print("許可承認")
self.status.text = "Starting Monitor"
//デバイスに許可を促す
let deviceVer = UIDevice.current.systemVersion
//if(UIDevice.currentDevice().systemVersion.substringToIndex(1).toInt() >= 8){
if(Int(deviceVer.substringToIndex(deviceVer.startIndex.advancedBy(1))) >= 8){
self.manager.requestAlwaysAuthorization()
print("OK")
}else{
self.manager.startRangingBeacons(in: self.region)
}
case .restricted, .denied:
//デバイスから拒否状態
print("Restricted")
self.status.text = "Restricted Monitor"
}
}
###エラーメッセージ
switch (CLLocationManager?.authorizationStatus)! {
Use of unresolve identifier 'authorization'とエラーが出ています。

//if(UIDevice.currentDevice().systemVersion.substringToIndex(1).toInt() >= 8){
Value of type 'String' has no member 'subtringToIndex'とエラーが出ています。

###該当のソースコード
import UIKit
import Foundation
import CoreLocation

class ViewController: UIViewController, CLLocationManagerDelegate
@IBOutlet weak var status: UILabel!
@IBOutlet weak var uuid: UILabel!
@IBOutlet weak var major: UILabel!
@IBOutlet weak var minor: UILabel!
@IBOutlet weak var accuracy: UILabel!
@IBOutlet weak var rssi: UILabel!
@IBOutlet weak var distance: UILabel!

//UUIDからNSUUIDを作成 //UUIDは送信機側とフォーマットも合わせる let proximityUUID = NSUUID(uuidString:"00000000-9367-1001-B000-001C4DCC713D") var region = CLBeaconRegion() var manager = CLLocationManager() override func viewDidLoad() { super.viewDidLoad() //背景色設定 //self.view.backgroundColor = UIColor(red:0.125,green:0.698,blue:0.667,alpha:1.0) //CLBeaconRegionを生成 region = CLBeaconRegion(proximityUUID:proximityUUID! as UUID,identifier:"EstimoteRegion") //デリゲートの設定 manager.delegate = self /* NotDetermined -- アプリ起動後、位置情報サービスへのアクセスを許可するかまだ選択されていない状態 Restricted -- 設定 > 一般 > 機能制限により位置情報サービスの利用が制限中 Denied -- ユーザーがこのアプリでの位置情報サービスへのアクセスを許可していない Authorized -- 位置情報サービスへのアクセスを許可している */ switch (CLLocationManager?.authorizationStatus)! { case .Authorized, .authorizedWhenInUse: //iBeaconによる領域観測を開始する print("観測開始") self.status.text = "Starting Monitor" self.manager.startRangingBeacons(in: self.region) case .notDetermined: print("許可承認") self.status.text = "Starting Monitor" //デバイスに許可を促す let deviceVer = UIDevice.current.systemVersion //if(UIDevice.currentDevice().systemVersion.substringToIndex(1).toInt() >= 8){ if(Int(deviceVer.substringToIndex(deviceVer.startIndex.advancedBy(1))) >= 8){ self.manager.requestAlwaysAuthorization() print("OK") }else{ self.manager.startRangingBeacons(in: self.region) } case .restricted, .denied: //デバイスから拒否状態 print("Restricted") self.status.text = "Restricted Monitor" } } /* - (void)locationManager:(CLLocationManager *)manager didStartMonitoringForRegion:(CLRegion *)region Parameters manager : The location manager object reporting the event. region : The region that is being monitored. */ func locationManager(manager: CLLocationManager, didStartMonitoringForRegion region: CLRegion) { manager.requestState(for: region) self.status.text = "Scanning..." } /* - (void)locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region Parameters manager :The location manager object reporting the event. state :The state of the specified region. For a list of possible values, see the CLRegionState type. region :The region whose state was determined. */ func locationManager(manager: CLLocationManager, didDetermineState state: CLRegionState, forRegion inRegion: CLRegion) { if (state == .inside) { manager.startRangingBeacons(in: region) } } /* - (void)locationManager:(CLLocationManager *)manager monitoringDidFailForRegion:(CLRegion *)region withError:(NSError *)error Parameters manager : The location manager object reporting the event. region : The region for which the error occurred. error : An error object containing the error code that indicates why region monitoring failed. */ func locationManager(manager: CLLocationManager, monitoringDidFailForRegion region: CLRegion?, withError error: NSError) { print("monitoringDidFailForRegion (error)") self.status.text = "Error :(" } /* - (void)locationManager:(CLLocationManager *)manager didFailWithError:(NSError *)error Parameters manager : The location manager object that was unable to retrieve the location. error : The error object containing the reason the location or heading could not be retrieved. */ //通信失敗 func locationManager(manager: CLLocationManager, didFailWithError error: NSError) { print("didFailWithError (error)") } func locationManager(manager: CLLocationManager, didEnterRegion region: CLRegion) { manager.startRangingBeacons(in: region as! CLBeaconRegion) self.status.text = "Possible Match" } func locationManager(manager: CLLocationManager, didExitRegion region: CLRegion) { manager.stopRangingBeacons(in: region as! CLBeaconRegion) reset() } /* - (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region Parameters manager : The location manager object reporting the event. beacons : An array of CLBeacon objects representing the beacons currently in range. You can use the information in these objects to determine the range of each beacon and its identifying information. region : The region object containing the parameters that were used to locate the beacons */ /***** NSArray => [CLBeacon] *****/ func locationManager(manager: CLLocationManager, didRangeBeacons beacons: [CLBeacon], inRegion region: CLBeaconRegion) { print(beacons) if(beacons.count == 0) { return } let beacon = beacons[0] /* beaconから取得できるデータ proximityUUID : regionの識別子 major : 識別子1 minor : 識別子2 proximity : 相対距離 accuracy : 精度 rssi : 電波強度 */ if (beacon.proximity == CLProximity.unknown) { self.distance.text = "Unknown Proximity" reset() return } else if (beacon.proximity == CLProximity.immediate) { self.distance.text = "Immediate" } else if (beacon.proximity == CLProximity.near) { self.distance.text = "Near" } else if (beacon.proximity == CLProximity.far) { self.distance.text = "Far" } self.status.text = "OK" self.uuid.text = beacon.proximityUUID.UUIDString self.major.text = "(beacon.major)" self.minor.text = "(beacon.minor)" self.accuracy.text = "(beacon.accuracy)" self.rssi.text = "(beacon.rssi)" } func reset(){ self.status.text = "none" self.uuid.text = "none" self.major.text = "none" self.minor.text = "none" self.accuracy.text = "none" self.rssi.text = "none" }0. override func didReceiveMemoryWarning() {```
super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } }

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

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

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

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

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

t_obara

2017/09/26 04:44

swift初学者とのことで、何らかのコードをコピペして学習する方法もあるかと思いますが、エラー箇所に関してどのように対処して良いのか、調査方法もわからないという状況を鑑みるに、もう少し文法的な部分を把握できる段階になってから取り組まれてはいかがでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問