2016-07-16 14 views
4

iOS 10のCMPedometerデータにアクセスしようとしていますが、いくつかのチュートリアルに従っていますが、何もできないようです。私はこの情報にアクセスしようとすることは一度もありませんでした。私は何かセットアップを得るためにいくつかの助けが好きです。あなたが提供できるどんな助けも大歓迎です。iOS 10のCMPedometer

ライブアップデートとアクセス情報の両方を、同じ日にのみ渡します。

これは現在開かれておらず、大きなエラーを出力します。

import UIKit 
import CoreMotion 

class ViewController: UIViewController { 

var days:[String] = [] 
var stepsTaken:[Int] = [] 

let activityManager = CMMotionActivityManager() 
let pedoMeter = CMPedometer() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    let cal = Calendar.current 
    var comps = cal.components([.year, .month, .day, .hour, .minute, .second], from: Date()) 
    comps.hour = 0 
    comps.minute = 0 
    comps.second = 0 
    let timeZone = TimeZone.system 
    cal.timeZone = timeZone 

    let midnightOfToday = cal.date(from: comps)! 

    if(CMPedometer.isStepCountingAvailable()){ 

     self.pedoMeter.startUpdates(from: midnightOfToday) { (data: CMPedometerData?, error) -> Void in 
      DispatchQueue.main.async(execute: {() -> Void in 
       if(error == nil){ 
        print("\(data!.numberOfSteps)") 
        //self.step.text = "\(data!.numberOfSteps)" 
       } 
       }) 
      } 
     } 

    } 
} 

私はいくつかのことを試してきましたが、シミュレータが開いていても大きなエラーメッセージが表示されることに気付きました。そのは閉じられ、唯一の私の携帯電話上で動作している場合は、エラーは次のとおりです。

2016年7月16日18:13:38.054710テスト[419:37870] [アクセス]プライベート

+0

ようこそ。あなたは、あなたが試したことを示す特定のコードで質問を更新し、コードでどのような問題が発生しているのかを詳しく説明する必要があります。それが現在立っているように、あなたの質問はあまりにも曖昧で広範です。 – rmaddy

+0

希望は良いですか? @rmaddy –

+0

あなたは問題を全く説明しませんでした。エラーは何ですか? 「開かない」とはどういう意味ですか? – rmaddy

答えて

7

あなたはXcodeののベータ版を使用していますログはすべてのユーザーに共通です。それを心配することはありません。コードを編集します。

import UIKit 
import CoreMotion 

class ViewController: UIViewController { 

    var days:[String] = [] 
    var stepsTaken:[Int] = [] 

    let activityManager = CMMotionActivityManager() 
    let pedoMeter = CMPedometer() 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let cal = Calendar.current 
     var comps = cal.components([.year, .month, .day, .hour, .minute, .second], from: Date()) 
     comps.hour = 0 
     comps.minute = 0 
     comps.second = 0 
     let timeZone = TimeZone.system 
     cal.timeZone = timeZone 

     let midnightOfToday = cal.date(from: comps)! 

     #if arch(i386) || arch(x86_64) && os(iOS) 

      // Simulator 

     #else 

      // Run only in Physical Device, iOS 

      if(CMPedometer.isStepCountingAvailable()){ 

       self.pedoMeter.startUpdates(from: midnightOfToday) { (data: CMPedometerData?, error) -> Void in 
        DispatchQueue.main.async(execute: {() -> Void in 
         if(error == nil){ 
          print("\(data!.numberOfSteps)") 
          //self.step.text = "\(data!.numberOfSteps)" 
         } 
        }) 
       } 
      } 
     #endif 
    } 
} 

StringYESと、info.plistにキーPrivacy - Motion Usage Descriptionを追加します。

iPhoneでアプリをもう一度実行してみてください。

+1

ありがとうございます - 私はこれに長い時間を費やしました。説明は、アプリが動作にアクセスすることを許可するかどうか尋ねられたときにユーザーに表示されているとおり、データ - info.plistでこのキーなしでqueryPedometerDataを使用するとクラッシュしました –

関連する問題