2012-08-30 8 views
6

Czy można zarejestrować niestandardowy schemat Url lub protokół, np. Myapp: 123, za pomocą MonoTouch? Chciałbym, aby moja aplikacja MonoTouch została uruchomiona, gdy użytkownik kliknie ten link na stronie internetowej, mailu lub opisie kalendarza i podniesie parametry adresu URL, w tym przypadku "123".Uruchamianie aplikacji MonoTouch na iPhone'a z niestandardowym adresem/protokołem?

Krótko mówiąc, chcę uzyskać tę samą funkcjonalność, co w przypadku aplikacji Spotify w telefonie iPhone z spotify: track: 123123 Czy można to zrobić?

Odpowiedz

4

Tak, zrobiłem to w kilku moich aplikacjach MonoTouch. Jest to wymagane, gdy używasz pakietu SDK Facebooka do logowania się do aplikacji.

W ogóle, należy wykonać te same instrukcje byś do regularnego Objective-C app: http://developer.apple.com/library/ios/#DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/AdvancedAppTricks/AdvancedAppTricks.html (patrz w rozdziale „Komunikacja z innymi aplikacjami”)

W swojej AppDelegate jest HandleOpenURL metoda aby przesłonić. Poza tym w twojej liście Info.plist są tylko niektóre ustawienia do zmiany.

+0

Yep! Mam to działa. Łatwiej niż myślałem w rzeczywistości :) Edytowałem Info.plist ręcznie, aby uzyskać właściwe rzeczy o schemacie, a następnie zaimplementowałem HandleOpenUrl() w AppDelegate i to było to! –

6

Tak jest i oto, co musisz zrobić.

Dodaj w Info.plist następujące gdzieś w znacznikach 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> 

Następnie w AppDelegate.cs zastąpić metodę HandleOpenURL:

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

Dzięki za próbny kolega z kodu, pomoże to innym. Czytałem gdzieś, że obsługa tego została usunięta w obecnej wersji Monotouch, ale wydaje się działać idealnie :) –

Powiązane problemy