2015-07-09 17 views
5

Mam aplikacje A i B i oba są przeze mnie opracowane. Chcę wysłać plik z punktu A do B, ale musi się to odbyć bez korzystania z usług udostępniania takich jak dropbox lub cokolwiek, co wiąże się z połączeniem internetowym.Udostępnianie pliku/danych między dwiema aplikacjami na iOS, które posiadam

OpenURL/CustomURLSchemes wydaje się nie działać, ponieważ są ograniczone dane, które można przekazać, a rozmiar pliku może być duży. A z powodu piaskownicy nie mogę zapisać pliku i przekazać adresu URL ... UIActivityViewController i UIDocumentInteractionController są opcjami tylko wtedy, gdy istnieje sposób wyświetlenia tylko jednej aplikacji, której dotychczas nie udało się zrealizować ..

to możliwe?

Posiadam obie aplikacje, a rozszerzenie pliku jest niestandardowe.

+0

możliwe duplikat [współdzielenie danych między dwoma lub więcej Aplikacje na iPhone'a (http://stackoverflow.com/questions/9425706/share-data-between-two-or-more-iphone-applications) –

+1

[Oto podobne pytanie, które może pomóc] (http: // stackoverflow. com/questions/21048742/how-containerurlforsecurityapplicationgroupidentifier-in-nsfilemanager-works-on) – Alladinian

+0

Dzięki Alladinian! – nihilvex

Odpowiedz

9

Rzeczywiście nie potrzebujesz rozszerzeń, aby udostępniać dane między własnymi aplikacjami. Możesz użyć do tego grupy aplikacji.

Zarówno w MyApp1, jak i MyApp2 przejdź do celu, a następnie do możliwości, a następnie do możliwości grup aplikacji. Pozwól, aby Xcode pomógł Ci uzyskać uprawnienia do grupy aplikacji na swoim koncie programisty Apple.

Teraz możesz użyć tego identyfikatora grupy aplikacji do udostępniania danych między aplikacjami. Na przykład:

W MyApp1 umieścić to w swoim appDelegate:

NSUserDefaults *myDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.mycompany.myappgroup"]; 
[myDefaults setObject:@"foo" forKey:@"bar"]; 

I MyApp2 appDelegate umieścić to:

NSUserDefaults *myDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.mycompany.myappgroup"]; 
NSLog(@"Show me something: %@",[myDefaults objectForKey:@"bar"]); 

Upewnij się, że łańcuch został użyty w nazwie Suite jest dokładna to samo, co znajduje się w sekcji możliwości grupy aplikacji w Xcode, a także ciąg w pliku plist uprawnień, który został automatycznie dodany do projektu.

Można także udostępniać pliki przy użyciu tej samej idei:

NSURL *groupURL = [[NSFileManager defaultManager] containerURLForSecurityApplicationGroupIdentifier: 
    @"group.mycompany.myappgroup"]; 

A dla tych z was, którzy chcą, aby zobaczyć go w Swift:

var userDefaults = NSUserDefaults(suiteName: "group.mycompany.myappgroup") 

var fileManager = NSFileManager.defaultManager().containerURLForSecurityApplicationGroupIdentifier("group.mycompany.myappgroup") 
+0

Dzięki za szybką reakcję! Spróbuję jutro i dam ci znać, ale wygląda na to, że wykona to zadanie! Twoje zdrowie! – nihilvex

+0

Działa jako urok! Wielkie dzięki! Dla przyszłych referencji komentarz Alladyńczyka jest również pomocny. – nihilvex

+0

Czy mogę zachować tę samą nazwę grupy na innym koncie programisty, aby udostępniać pliki między aplikacjami różnych programistów? –

Powiązane problemy