2016-12-17 2 views
0

J'ai un schéma d'URL personnalisé fonctionne bien, mais il y a un petit comportement que j'espère changer ... Actuellement, l'url d'arrivée est capturé et traité dans le code suivant (donc, tout bien ici):macOS personnalisé urlscheme, ne faites pas app app frontest?

- (void) handleURLEvent:(NSAppleEventDescriptor*)event withReplyEvent:(NSAppleEventDescriptor*)replyEvent 
{ 
    NSString* url = [[event paramDescriptorForKeyword:keyDirectObject] stringValue]; 
    //I parse and deal with the url here// 
    } 

Est-il possible d'éviter que mon application ne devienne l'application la plus en avant? Chaque fois que l'URL est reçue, mon application est déjà ouverte, car j'ai initié la communication à partir de cette application, et je suis simplement à l'écoute de la réponse. Cependant, parfois l'appel est effectué via un NSTimer afin que mon application peut ou ne peut pas être l'application la plus à l'avant. Je ne veux pas perturber le flux de travail si je suis en train de dire que je navigue sur des pages dans Safari en faisant en sorte que mon application mette l'accent sur Safari. J'espère que cela a du sens.

Est-ce possible?

Répondre

0

Pour tous ceux qui sont intéressés, j'ai plutôt mis en place un conteneur de groupe. Je sauve ma charge utile aux valeurs par défaut du groupe, puis envoie un NSDistributedNotification à partir de mon application d'aide. L'application principale reçoit la notification et lit les données de charge utile à partir des valeurs par défaut du groupe.

Une telle solution de contournement ... mais il est nécessaire que les applications principale et auxiliaire sont sandboxed.

J'ai également découvert que KVO sur les valeurs par défaut du groupe ne fonctionne pas dans le sandbox, et n'envoie pas non plus un userDictionary dans NSDistributedNOtification. :(

J'ai dû écrire sooo beaucoup de code supplémentaire pour faire mon application jouer bien dans le bac à sable.