2016-09-12 26 views
0

私のSwift 2.0アプリケーションでは、CoreLocationを使用して特定の場所から1km以内にいるかどうかを確認していますが、そうであればAVFoundationを使用してサウンドを再生します。didUpdateLocationsの更新が中止されました

問題は、私はdidUpdateLocations内のオーディオの再生を開始するとき、それはオーディオが停止した後も、更新を停止し、..です

ここに私のコードです:

func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) { 



    //Method called every time the location is updated by CoreLocation 



    let userLocation = locations[0] 


    var i = 0 

    while i < coordinates.count { 

     //Looping through all different coordinates 



     let location = CLLocation(coordinate: coordinates[i], altitude: 0, horizontalAccuracy: kCLLocationAccuracyBest, verticalAccuracy: kCLLocationAccuracyBest, timestamp: NSDate()) 



     if userLocation.distanceFromLocation(location) < 1001 { 


      //If the user is within 1000m of area[i] 



      if player.rate == 0.0 { 

       //Checks for the player already playing something else 


       if let url = NSBundle.mainBundle().URLForResource(titles[i], withExtension: "mp3") {        


         player.removeAllItems() 
         player.insertItem(AVPlayerItem(URL: url), afterItem: nil) 
         player.play() 






         i = 10 //We had an area that was closer and the player is finished, so we stop the loop 

       } 


      } 


     } else { 

      //This location was further than 1000 meters, so we up the count and check the next coordinate 

      i += 1 

     } 

    } 

} 

didUpdateLocationsだけの更新を停止しているのでユーザーが別のエリアに入ると、オーディオを再生できません。あなたの助けが高く評価されています!それはあなたのwhileループのように見える

おかげ

+0

player.rate!= 0.0、または「if let url」条件がfalseの場合はどうなりますか? – DevKyle

+0

@DevKyle何も起こらないはずです。プレーヤーのレートが0.0(つまり何も再生していない)で、URLが有効な場合のみ、オーディオを再生する必要があります。私が奇妙に感じるのは、オーディオの再生が始まると、CoreLocationがまったく動作しなくなるようです。 –

+0

'requestLocation() 'メソッドで現在地を取得していますか?これにより、コアロケーションがデバイスロケーションを取得し、デバイスロケーションの更新を停止します。 – Adolfo

答えて

1

が立ち往生する場合player.rate!= 0.0、またはI-値は変更されませんので、「URLを許可すれば、」条件が偽です。私は間違っているかもしれませんが、このページにあるコードを見てみると、そうであるようです。

関連する問題