2012-08-30 16 views
6

¿Es posible registrar un protocolo o esquema Url personalizado, como myapp: 123, con MonoTouch? Me gustaría que mi aplicación MonoTouch se inicie cuando el usuario haga clic en este enlace en una página web, correo o descripción del calendario, y seleccione upp los "parámetros" de la url, en este caso "123".Ejecute la aplicación MonoTouch iPhone con Url/Protocolo personalizado?

En resumen, deseo la misma funcionalidad que para la aplicación Spotify en iPhone con su spotify: pista: 123123 ¿Se puede hacer?

Respuesta

4

Sí, lo he hecho en un par de mis aplicaciones MonoTouch. En realidad, se requiere cuando usa el SDK de Facebook para iniciar sesión en su aplicación.

En general, siga las mismas instrucciones que para una aplicación regular de Objective-C: http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html (busque en la sección "La comunicación con otras aplicaciones")

En su AppDelegate hay un método para anular HandleOpenURL. Más allá de eso, solo hay algunas configuraciones en tu Info.plist para cambiar.

+0

Sí! Lo tengo trabajando. Más fácil de lo que pensaba en realidad :) Editó Info.plist manualmente para obtener las cosas correctas allí sobre el esquema, luego implementó HandleOpenUrl() en AppDelegate y eso fue todo. –

6

Sí, lo es y esto es lo que debe hacer.

Añadir info.plist en el siguiente algún lugar dentro de las etiquetas dict:

<key>CFBundleURLTypes</key> 
<array> 
    <dict> 
     <key>CFBundleURLName</key> 
     <string>com.companyname.com.receiver</string> 
     <key>CFBundleURLSchemes</key> 
     <array> 
      <string>myapp</string> 
     </array> 
    </dict> 
</array> 

Luego, en AppDelegate.cs anulan la HandleOpenURL método:

public override bool HandleOpenURL (UIApplication application, NSUrl url) 
{ 
    if (url == null) { 
     return false; 
    } 

    var uri = new Uri(url.ToString()); // I prefer working with the Uri class. 

    // Your logic here 

    return true; 
} 
+1

Gracias por el código de muestra mate, ayudará a otros. Había leído en alguna parte que el soporte para esto se eliminó en la versión actual de monotouch, pero parece funcionar simplemente perfecto :) –

Cuestiones relacionadas