2015-09-18 7 views
11

Ho un compito di condividere i dati tra le app nello stesso dispositivo. Possono essere entrambe le app possono utilizzare un database condiviso sullo stesso dispositivo. Come condividere i dati tra due app in IOS. Qualcuno l'ha fatto in qualche modo. Per favore fatemi sapere. GrazieCondivisione di dati tra le app in IOS

+0

Partenza [questo link] (http://www.enharmonichq.com/sharing-data-locally-between-ios-apps/). È basato su Objective-C ma lo stesso concetto si applica ancora. –

+0

@ Phoen1xUK Penso che l'articolo sia obsoleto, dal momento che iOS 8, i gruppi di app sono il modo ufficiale per farlo. – neuhaus

+0

Sto parlando di gruppi di app. hai implementato questo? – Abhishek

risposta

23

È possibile attivare il gruppo di app nella scheda delle funzionalità di App Project su entrambe le app con lo stesso ID contenitore di gruppo. "group.com.yourCompanyID.sharedDefaults"

enter image description here

Poi è possibile accedere alla stessa cartella da tue app utilizzando il seguente URL:

let sharedContainerURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.yourCompanyID.sharedDefaults")! 

Quindi, se si desidera condividere uno stato di interruttore da due applicazioni diverse si dovrebbe fare come segue:

import UIKit 

class ViewController: UIViewController { 
    @IBOutlet weak var sharedSwitch: UISwitch! 
    let switchURL = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "group.com.yourCompanyID.sharedDefaults")! 
     .appendingPathComponent("switchState.plist") 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     print(switchURL.path) 
     NotificationCenter.default.addObserver(self, selector: #selector(updateSwitch), name: .UIApplicationDidBecomeActive, object: nil) 
    } 
    func updateSwitch(_ notofication: Notification) { 
     sharedSwitch.isOn = NSKeyedUnarchiver.unarchiveObject(withFile: switchURL.path) as? Bool ?? false 
    } 
    @IBAction func switched(_ switch: UISwitch) { 
     let success = NSKeyedArchiver.archiveRootObject(switch.isOn, toFile: switchURL.path) 
     print(success) 
    } 
}