2016-04-18 14 views
6

Tôi có một số bản nhạc trong ứng dụng phát dưới AVAudioSessionCategoryAmbient. Ngay bây giờ vấn đề của tôi là khi một popup từ Apple như "Đăng nhập vào iTunes Store" bật lên nó tạm dừng âm nhạc của tôi, nhưng không tiếp tục nó. Rất may nó sẽ chăm sóc của tôi SKScene ... nhưng không phải là âm nhạc. Có cách nào để gọi lại khi cảnh báo bị loại bỏ không?Cảnh báo "Đăng nhập vào iTunes Store" và "Pin yếu" tạm dừng ứng dụng của tôi. Làm thế nào tôi có thể bỏ tạm dừng chúng?

Điều kỳ lạ là UIAlertView khác mà tôi đã thực hiện không làm điều này với ứng dụng, vì vậy tôi thực sự không biết điều gì đang xảy ra.

Danh sách cảnh báo rằng tạm dừng cảnh và âm nhạc:

  • Đăng nhập vào itunes
  • Pin yếu
  • mua Confirm

Trả lời

4

tôi đã có vấn đề tương tự lúc nào trước (đầu Swift 1.2). tôi giải quyết vấn đề của tôi bằng cách quan sát dừng trạng thái cho SKScene. SKScene có cái nhìn đó là SKView loại.

private var queueContext = 0 

override func didMoveToView(view: SKView) { 
    super.didMoveToView(view) 
    self.view.addObserver(self, 
          forKeyPath: "paused", 
          options: .New, 
          context: &queueContext) 
} 

override func observeValueForKeyPath(keyPath: String?, ofObject object: AnyObject?, change: [String : AnyObject]?, context: UnsafeMutablePointer<Void>) { 
    if context == &queueContext { 
     if let paused = change?[NSKeyValueChangeNewKey] as? Bool { 
      // TODO: react on paused status changes 
     } 
    } 
    else { 
     super.observeValueForKeyPath(keyPath, ofObject: object, change: change, context: context) 
    } 
} 
+1

Cảm ơn bạn rất nhiều! –

+0

chờ một chút. Đây là sự cố với sự chuyển tiếp, đặc biệt khi .presentScene() được gọi. Thật không may là lỗi là mơ hồ. Và chỉ xảy ra khi tôi chuyển sang cảnh thứ 3. Ý tưởng nào? –

+0

@ J.Doe Bạn gặp phải loại tai nạn nào? Ngăn xếp sự cố? – Ramis

2

Một vài ý tưởng:

Thêm một Key- giá trị quan sát trên thuộc tính rate của người chơi. Khi thay đổi giá (hệ thống UIAlertController dừng âm thanh, bắt đầu phát lại một lần nữa.

Đối với StoreKit giao dịch: Tôi tin rằng bạn có thể nhận và thiết lập gọi lại cho trạng thái thành công hoặc không thành công SKPaymentTransaction. không tính đến trường hợp pin yếu mặc dù.

Các vấn đề liên quan