Я реализовал схему URL и использовал ее для передачи данных в свое приложение методом вызова. Весь код показан ниже
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url{
// Check the calling application Bundle ID
if ([[url scheme] isEqualToString:@"yuvitime"])
{
NSLog(@"URL scheme:%@", [url scheme]);
NSString * yuvitimeRequestValue = [url query];
NSDictionary * userInfor = [[NSDictionary alloc]initWithObjectsAndKeys:yuvitimeRequestValue, @"YuvitimeRequest", nil];
NSNotificationCenter * notificationCentre = [NSNotificationCenter defaultCenter];
[notificationCentre postNotificationName:@"URLSCHEMEACTIVATEDNOTIFICATION" object:self userInfo:userInfor];
return YES;
}
else
return NO;
}
Если мое приложение находится в фоновом режиме, все работает нормально. Когда вы нажимаете URL-адрес, приложение возвращается к Foreground, и URL-адрес обрабатывается как закодированный в вышеуказанной функции.
Однако, если приложение прекращено (приложение еще не запущено), щелкнув URL-адрес, он запускает приложение только без вызова функции обработки, показанной выше.
После поиска лучший результат, который мне удалось получить, - это
приложения: WillFinishLaunchingWithOptions:
Когда его попросят открыть URL-адрес, результат возврата этого метода комбинируется с результатом возврата из метода application:didFinishLaunchingWithOptions:
, чтобы определить, следует ли обрабатывать URL-адрес. Если любой из методов возвращает NO, система не вызывает метод application:openURL:options
:. Если вы не применяете один из методов, учитывается только возвращаемое значение реализованного метода.
- приложение: didFinishLaunchingWithOptions:
Этот метод представляет ваш последний шанс обработать любые ключи в словаре launchOptions. Если вы не оценили ключи в методе application:willFinishLaunchingWithOptions:
, вы должны посмотреть на них в этом методе и предоставить соответствующий ответ.
Объекты, не являющиеся делегатом приложения, могут получить доступ к тем же значениям словаря launchOptions, наблюдая уведомление с именем UIApplicationDidFinishLaunchingNotification
и обращаясь к словарю userInfo уведомлений. Это уведомление отправляется вскоре после возвращения этого метода.
Результат возврата этого метода объединяется с результатом возврата метода application:willFinishLaunchingWithOptions:
, чтобы определить, следует ли обрабатывать URL. Если какой-либо метод возвращает NO, URL-адрес не обрабатывается. Если вы не реализуете один из методов, учитывается только возвращаемое значение реализованного метода.
Несмотря на объяснение, я до сих пор не знаю, как это сделать, и я не мог найти ничего конкретного в Интернете.
Спасибо
Привет