2015-05-23 19 views
6

Come rilevare in quale app viene utilizzata la mia tastiera personalizzata e mostrare un pulsante diverso? E.g. in Twitter vorrei aggiungere @ alla stringa I post nel campo di input e in Reddit/r/Nella tastiera iOS personalizzata rileva l'app

+2

Come detto Schemetrical, non è possibile determinare l'app in cui ci si trova (almeno, non si * dovrebbe * essere in grado di essere, e probabilmente qualsiasi risposta inviata qui sarebbe considerata una scappatoia e verrà risolta da Apple), ma tu * puoi * sapere che sei in un campo di testo in stile Twitter e rispondere in modo appropriato, il che potrebbe essere meglio che conoscere l'app, dal momento che ci sono API integrate da pubblicare su Twitter che possono essere utilizzate da qualsiasi app . –

+0

@BenPious grazie per le ispirazioni! Apprezzo qualsiasi indizio su "campo di testo in stile Twitter" –

+2

Hai accesso all'API a un oggetto (non ricordo quale) che implementa questo protocollo: https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITextInputTraits_Protocol/ –

risposta

2

Questo non è possibile. Un'estensione viene eseguita in modalità sandboxing e riceve solo informazioni dall'API e non può accedere ad altro. La tastiera può ricevere solo modifiche al contesto del testo e attivare/disattivare le chiamate. Essere in grado di rilevare un'app si trova all'esterno della sandbox di estensione e quindi è impossibile.

+0

hai ragione ma c'è una soluzione alternativa (controlla i commenti sopra) –

+2

'self. textDocumentProxy.keyboardType' dovrebbe funzionare. – Schemetrical

5

È possibile tramite il seguente codice. Come si otterrà identificativo fascio dell'app dove si sta usando la tastiera personalizzata ..

Swift

let hostBundleID = self.parentViewController!.valueForKey("_hostBundleID") 
    let currentHostBundleID = String(hostBundleID) 
    print(currentHostBundleID); 

Da identificatore pacchetto è possibile trovare il nome dell'app facilmente.

Buona fortuna!

Problemi correlati