Ho implementato uno schema URL e lo uso per trasferire i dati alla mia app chiamando il metodo. L'intero codice viene mostrato come di seguitoAvvio dell'app tramite URL, ma OpenUrl non chiamato
- (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;
}
Se la mia applicazione è in background, tutto funziona bene. Quando fai clic su un URL, l'app viene riportata in primo piano e l'URL viene gestito come codificato nella funzione precedente.
Tuttavia, se l'app viene chiusa (l'app non è ancora stata avviata), facendo clic sull'URL, avvia l'app senza chiamare la funzione di gestione mostrata sopra.
Dopo la ricerca attraverso, il miglior risultato riesco a ottenere è questa applicazione
: WillFinishLaunchingWithOptions: Quando è stato chiesto di aprire un URL, il risultato restituito da questo metodo è combinato con il risultato di ritorno dal application:didFinishLaunchingWithOptions:
metodo per determinare se un URL deve essere gestito. Se uno dei due metodi restituisce NO, il sistema non chiama il metodo application:openURL:options
:. Se non si implementa uno dei metodi, viene considerato solo il valore restituito del metodo implementato.
- Applicazione: didFinishLaunchingWithOptions: Questo metodo rappresenta la tua ultima possibilità di elaborare le eventuali chiavi nel dizionario launchOptions. Se non hai valutato le chiavi nel tuo metodo application:willFinishLaunchingWithOptions:
, dovresti esaminarle con questo metodo e fornire una risposta appropriata. Gli oggetti che non sono delegati dell'app possono accedere agli stessi valori del dizionario launchOptions osservando la notifica denominata UIApplicationDidFinishLaunchingNotification
e accedendo al dizionario userInfo della notifica. Tale notifica viene inviata poco dopo il ritorno di questo metodo. Il risultato di ritorno di questo metodo è combinato con il risultato di ritorno dal metodo application:willFinishLaunchingWithOptions:
per determinare se un URL deve essere gestito. Se uno dei due metodi restituisce NO, l'URL non viene gestito. Se non si implementa uno dei metodi, viene considerato solo il valore restituito del metodo implementato.
Nonostante la spiegazione, non so ancora come farlo e non ho trovato nulla di concreto online.
Grazie
saluti
prova - applicazione (BOOL): openURL: sourceApplication: annotazione: – larva
ho provato entrambi, penso che il problema risieda nella configurazione di LaunchOptions come la documentazione suggeriva "Questa è l'ultima possibilità di elaborare i tasti". Ma non riuscivo a capire come. – progammingBeignner
sei sicuro - (BOOL) application: handleOpenURL: non viene chiamato? problema sembra che nessun oggetto ascolti notifiche quando app init. puoi mostrare un avviso qui per confermare di nuovo – larva