2016-09-25 14 views
10

Ekranımı yayınladıktan sonra ekranı kaydetmeyi denediğimde sorun yaşıyorum ama çalışmıyor. Ekranımı kaydettiğimde de aynı şey gerçekleşir ve sonra ekranı canlı yayınlamaya çalışırım. Onları beraber yapmaya çalışmıyorum btw. Bu bittikten sonra diğerini kullanmaya çalışıyorum. Kod veya daha fazla bilgi görmeniz gerekiyorsa bana bildirin. Swift 3'te ve yeni replay kit frameworkünü kullanıyorum. Teşekkürler!Tekrar oynatma ekranı kaydetmeye ve sonra ekranı yayınlamaya izin veriyor mu?

DÜZENLEME: o 10.1 veya olmasın itibariyle çözümlenmiş olup olmadığını BU, emin değilim ben bu ReplayKit bir hata olduğuna inanıyoruz KOD KULLANMA IM

//LIVE STREAM REPLAYKIT===================================================================== 
func broadcastActivityViewController(_ broadcastAVC: RPBroadcastActivityViewController, didFinishWith broadcastController: RPBroadcastController?, error: Error?) { 
    print("=====hello delegate \(broadcastController?.broadcastURL) (error)") 

    self.broadcastController = broadcastController 
    self.broadcastController?.delegate = self 

    broadcastAVC.dismiss(animated: true) { 
     self.broadcastController?.startBroadcast(handler: { error in 

      print("start broadcast \(error)") 
      print("\(broadcastController?.broadcastExtensionBundleID)") 
      print("==url=\(broadcastController?.broadcastURL)") 
      print("==serviceInfo=\(broadcastController?.serviceInfo)") 

    //This is called when the broadcast is live 

    }) 
    } 
} 


func broadcastController(_ broadcastController: RPBroadcastController, didFinishWithError error: Error?) { 
    print("broadcastController====delegate") 

    let alert = UIAlertController(title: "Alert", message: "There was an error broadcasting your screen. Please try again", preferredStyle: UIAlertControllerStyle.alert) 

    // show the alert 
    self.view!.window?.rootViewController!.present(alert, animated: true, completion: nil) 

    alert.addAction(UIAlertAction(title: "Okay", style: UIAlertActionStyle.destructive, handler: { action in 

     // add action 
    })) 
} 



func broadcastController(_ broadcastController: RPBroadcastController, didUpdateServiceInfo serviceInfo: [String : NSCoding & NSObjectProtocol]) { 
    print("broadcastController====didUpdateServiceInfo") 
    } 

    //LIVE STREAM REPLAYKIT========================================================= 


//RECORD SCREEN REPLAYKIT------------------------------------------------------------------- 
func startRecoding() { 
    let recorder = RPScreenRecorder.shared() 
    if recorder.isAvailable { 
     recorder.startRecording(handler: { (error) in 


    if error == nil { // Recording has started 


    } else { 
       // Handle error 
       print("Dont Allow Recording") 

    } 
}) 

    } else { 
     print("Did not record screen") 

     //if iphone or ipad doesnt support replaykit 

     // create the alert 
     let alert = UIAlertController(title: "Alert", message: "Please make sure your device supports ReplayKit!", preferredStyle: UIAlertControllerStyle.alert) 


     // show the alert 
     self.view!.window?.rootViewController!.present(alert, animated: true, completion: nil) 

     alert.addAction(UIAlertAction(title: "Try Again!", style: UIAlertActionStyle.destructive, handler: { action in 
      // add action 

    })) 
    } 
} 


func stopRecording() { 

    let sharedRecorder = RPScreenRecorder.shared() 
    sharedRecorder.stopRecording(handler: { (previewViewController: RPPreviewViewController?, error) in 

if previewViewController != nil { 
      print("stopped recording") 

      previewViewController!.previewControllerDelegate = self 

      let alertController = UIAlertController(title: "Recording", message: "Tap view to watch, edit, share, or save your screen recording!", preferredStyle: .alert) 

      let viewAction = UIAlertAction(title: "View", style: .default, handler: { (action: UIAlertAction) -> Void in 

       self.view?.window?.rootViewController?.present(previewViewController!, animated: true, completion: nil) 

}) 

      alertController.addAction(viewAction) 
      self.previewViewController = previewViewController! 
      self.previewViewController.modalPresentationStyle = UIModalPresentationStyle.fullScreen 
      self.view?.window?.rootViewController!.present(alertController, animated: true, completion: nil) 
} 


else { 
      print("recording stopped working") 

      //create the alert================================ 

      let alert = UIAlertController(title: "Alert", message: "Sorry, there was an error recording your screen. Please Try Again!", preferredStyle: UIAlertControllerStyle.alert) 

      // show the alert 
      self.view!.window?.rootViewController!.present(alert, animated: true, completion: nil) 

      alert.addAction(UIAlertAction(title: "Try Again!", style: UIAlertActionStyle.destructive, handler: { action in 
       // add action 

      })) 
     } 
    }) 
} 


func previewControllerDidFinish(_ previewViewController: RPPreviewViewController) { 

print("cancel and save button pressed") 

previewViewController.dismiss(animated: true, completion: nil) 
//dismiss preview view controller when save or cancel button pressed 

} 
+0

Lütfen, ekranı yayınladınız, oyuncu bitirir, daha sonra diske yayınlanan videoyu kaydetmek ister misiniz? – Lance

+0

Sorun, ekranın yayınını bitirdikten sonra durağa basıyorum ve sonra ekranı kaydetmeyi deneyin ve işe yaramıyor. Yayınlanan videoyu kaydetmek istemiyorum. Sadece ekranı kaydedebilmek istiyorum ve o zaman bittiğinde ekranı yayınlamak istiyorum. Yeni replay kit çerçevesini gördüyseniz bile bilmiyorum ama ekranı kaydedebilir ve ekranı canlı olarak yayınlayabiliriz. Sadece bir uygulamada kullanmasına izin verilip verilmediğini bilmiyorum. – coding22

+0

İkisi de iyi çalışıyorlar, ama eğer bunu arka arkaya yaparsam. Ekranı ilk önce kaydeder gibi çalışır ve ekran canlı yayınlamak istiyorum, işe yaramaz. Aynı şey, ekranın ilk canlı yayınlandığı yerde tersine yaparsam aynı şey olur ama ben ekrana kayıt yapmaya çalıştığımda çalışmayacaktır. Bunun neden olduğundan emin değilim. – coding22

cevap

1

IS, ama denemeye değer Sorununuzu çözüp çözmediğini görmek için 10.1 beta.