Invocar llamadas desde el background?

Estoy intentando extender mi aplicación actual (agenda interna de la compañía) para poder reenviar llamadas a través de la centralita de nuestro operador. El process es una persona que me llama. Entonces puedo "estacionar" la llamada y llamar a otro compañero de trabajo y nuevamente llamar al número 4 para conectar a la persona ay al compañero de trabajo. Pero cuando pasé por el process del código en mi mente, me di count de que podría no ser posible. Porque lo que sucede es una llamada de Persona A, abro mi aplicación y selecciono una persona. La aplicación inicia una llamada y luego la aplicación se suspende en modo de background.

¿Cómo procederé a que la aplicación (mientras esté suspendida) inicie una tercera llamada al número 4 sin tener que volver a activar la aplicación? Desde mis testings puedo ver la aplicación enviando cosas de debugging, pero al intentar hacer cosas de interfaz de usuario como, por ejemplo, abrir un browser, no pasará. ¿También es posible cuando hay una llamada activa? ¿O la llamada toma actividad y suprime todas las aplicaciones?

Solo con la esperanza de get una input rápida sobre esto antes de seguir adelante y pasar horas inútiles en este darse count de que incluso podría no ser posible.

EDIT: agregó algunos ejemplos de código.

Primero, el usuario presiona una fila en el libro de contactos.

public override void RowSelected(UITableView tableView, NSIndexPath indexPath) { Console.WriteLine("Initiate Call to Contact"); NSUrl url = new NSUrl("tel:" + _items.Contacts[indexPath.Row].Number); if (!UIApplication.ShanetworkingApplication.OpenUrl(url)) { var av = new UIAlertView("Not supported" , "Scheme 'tel:' is not supported on this device" , null , "Ok thanks" , null); av.Show(); } } 

que le pedirá al usuario que llame a este número (porque afaik no puede iniciar la llamada sin el prompting?

Ahora, cuando esto se hace, se inicia un timer (basado en configuraciones) para iniciar una tercera llamada al número 4. Este es el número que la central telefónica de la compañía telefónica usa para emparejar las llamadas telefónicas juntas.

Ponemos la aplicación en estado interno 3 (suspensión de la aplicación intentada debido a una llamada saliente)

 public partial class AppDelegate : UIApplicationDelegate { int ourTask; public override void DidEnterBackground (UIApplication application) { Console.WriteLine("Entenetworking Background!"); ourTask = application.BeginBackgroundTask(delegate { if(ourTask != 0) { application.EndBackgroundTask(ourTask); ourTask = 0; } }); new System.Action(delegate { if(_state == 3) { BeginInvokeOnMainThread( delegate { Console.WriteLine("Code queued"); if(UIDevice.CurrentDevice.IsMultitaskingSupported) { Thread.Sleep(10000); NSUrl url = new NSUrl("tel:" + 4); if (!UIApplication.ShanetworkingApplication.OpenUrl(url)) { Console.WriteLine("Not supported!"); } Console.WriteLine("Invoke Finished!"); } application.BeginInvokeOnMainThread(delegate { if(ourTask != 0) { application.EndBackgroundTask(ourTask); ourTask = 0; Console.WriteLine("App Ended!"); } }); }); } }).BeginInvoke(null,null); } } 

No estoy seguro si entiendo tu problema correctamente. Pero, en general, todas las llamadas de subprocess de interfaz de usuario deben realizarse en el subprocess de interfaz de usuario (subprocess principal de la aplicación). Si tiene un subprocess de trabajo, debe delegar las llamadas de la interfaz de usuario al subprocess de la interfaz de usuario, al no hacerlo, se produce el hecho de que parece que se ignora la llamada (en realidad, se ignora :)).

Para llamar a un subprocess de UI desde cualquier otro subprocess, use la function InvokeOnMainThread. Este es un método implementado en todas las classs derivadas de NSObject.

this.InvokeOnMainThread (delegate {// haz tus cosas aquí});

Espero que esto ayude.

Esto no se pudo resolver con la estructura actual de iOS.