UIApplication sharedApplication openURL - PullRequest
0 голосов
/ 04 июня 2019

У меня есть гибридное приложение, в котором есть проект iOS obj-c, в котором есть только класс AppDelegate, вся остальная логика разработана в гибридном приложении.

в гибридном приложении многократно используется openURL,что мне нужно:

1) обрабатывать делегат openURL в случае, если приложение iOS (AppDelegate)

2) может изменить все URL-адреса?(в AppDelegate)

3) можно переопределить [[UIApplication sharedApplication] openURL]

Ответы [ 2 ]

0 голосов
/ 05 июня 2019

Решение - создать подкласс UIApplication и переопределить метод openURL

Заголовочный файл

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
@interface Application : UIApplication

@end

файл реализации

 #import "Application.h"


@implementation Application

- (void)openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenExternalURLOptionsKey,id> *)options completionHandler:(void (^)(BOOL))completion
{

    //DO what Ever Here befor called supoer

    [super openURL:url options:options completionHandler:completion];

}

@end

Требуется дополнительная модификация в файле main.m

Приложение UIA должно быть изменено, поэтому вместо общей системы ставится подкласс

main.m

#import <UIKit/UIKit.h>
#import "AppDelegate.h"
#import "Application.h"

int main(int argc, char * argv[]) {
    @autoreleasepool {
        return UIApplicationMain(argc, argv, NSStringFromClass([Application class]), NSStringFromClass([AppDelegate class]));
    }
}
0 голосов
/ 04 июня 2019

Зарегистрируйте пользовательскую схему URL для вашего приложения

Используйте пользовательский URL для вызова вашего приложения

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

- (BOOL) application : (UIApplication*) app openURL : (NSURL*) url options : (NSDictionary<UIApplicationOpenURLOptionsKey, id>*) options {

         //Parse the URL and invoke the necessary modules or webpages 

        return true;

    }

Пожалуйста, пройдите этот урок здесь . Это даст вам полную идею.

Надеюсь, это поможет.


Обновление

1) обрабатывать делегат openURL в случае приложения iOS (AppDelegate)

Да, это может быть обработано в вышеупомянутом делегате

2) я могу изменить все URL? (в AppDelegate)

Да, вы можете прочитать пользовательскую схему URL, изменить URL и вызвать URL в своем веб-просмотре

3) можно переопределить [[UIApplication sharedApplication] openURL]

Если вы имеете в виду чтение вызванного URL в методе делегата, тогда Да

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