tikhonov666
@tikhonov666
iOS, Swift, Objective-C

Как передать данные между ios приложениями?

Есть задача, передавать данные от одного приложения к другому. Смотрел в сторону  расширений, а конкретно  Document Provider, но до конца не понял как его использовать и подходит ли он под мои нужды.
Задача усложняется тем, что у меня нету Developer Program и поэтому варианты работы через iCloud отпадают.

Есть какие-то идеи, как с этим разобраться?
  • Вопрос задан
  • 3464 просмотра
Пригласить эксперта
Ответы на вопрос 1
alexyat
@alexyat
iOS Developer
Все достаточно просто, приложение которе передает данные должно создать
UIDocumentInteractionController;

UIDocumentInteractionController *_controller;

if(!_controller)
            _controller = [[UIDocumentInteractionController alloc]init];
        _controller.delegate = self;
        NSURL *documentURL = @"тут должен быть урл в файловой системе, в который записаны данные которые нужно передать";
        _controller.URL = documentURL;
        if(![_controller presentOpenInMenuFromRect:cell.frame inView:self animated:YES])
        {
            NSLog(@"can't open in another app");
        }
        else
            NSLog(@"Open in another app");

// ну и делигат методы

- (UIViewController *)documentInteractionControllerViewControllerForPreview:(UIDocumentInteractionController *)controller {
    
    return  self;// это вьюв контроллер в котором будет всплывающее меню с выбором аппа который будет открывать.
}

- (void)documentInteractionController:(UIDocumentInteractionController *)controller willBeginSendingToApplication:(NSString *)application {
    
    NSLog(@"Starting to send this puppy to %@", application);
}

- (void)documentInteractionController:(UIDocumentInteractionController *)controller didEndSendingToApplication:(NSString *)application {
    
    NSLog(@"We're done sending the document.");
}


в принимающем аппе нужно в Info.plist добавить Exported Type UTIs, и добавить при запуске аппа обработку launchOptions

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions


что-то типа вот такого

NSURL *url = (NSURL *)[launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
NSData* data = [NSData dataWithContentsOfURL:url];


и делать уже что угодно с этой NSData, преобразовывать в то что вам нужно.

подробнее как добавить вашему аппу возможность открывать файлы написано тут главное чтобы файл который вы создали в первом аппе был с тем же расширением которое вы зарегистрируете во втором.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы