2015-12-17 2 views
5

In meinem aktuellen Projekt muss ich Text auf WhatsApp von iOS-App teilen.iOS9: canOpenURL gibt für das URL-Schema von WhatApp false zurück

Hier ist mein Code Text auf whatsapp zu teilen: -

NSURL *whatsappURL = [NSURL URLWithString:@"whatsapp://send?text=Hello%2C%20World!"]; 
if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) { 
[[UIApplication sharedApplication] openURL: whatsappURL]; 
} 

aber canOpenURL immer falsch in iOS9 zurück.

Gibt es eine Datenschutzrichtlinie für iOS9? Kann mir jemand helfen.

Vielen Dank im Voraus.

+1

w Mit iOS 9 wurde Apple Transport Security eingeführt. Vielleicht hat es etwas damit zu tun. Es sagt im Grunde, dass Sie keine unsicheren Anfragen mehr senden können. Aber ich bin mir nicht sicher, ob es in diesem Fall das Problem ist. – dan

+2

vielleicht kann Ihnen das helfen http://stackoverflow.com/questions/30987986/ios-9-not-opening-instagram-app-with-url-scheme – dan

+0

ATS hat nichts damit zu tun. Apple führte ein separates System ein, das in "info.plist" angeben muss, welche Schemata eine App verwenden wird, aber es ist vollständig orthogonal zu ATS. – Avi

Antwort

36

In iOS 9 Sie URL-Schemata weiße Liste müssen Ihre App wollen in Info.plist unter dem LSApplicationQueriesSchemes Schlüssel abzufragen (ein Array von Strings):

Zum Beispiel:

enter image description here

So In Ihrem Fall müssen Sie anstelle von fb und twitterwhatsapp angeben.

Beachten Sie, dass dieser Mechanismus nur für canOpenURL und nicht für openURL gilt. Sie müssen kein Schema in Info.plist aufgelistet haben, um es mit openURL öffnen zu können. Hoffe, dass hilft.

+1

danke..es funktioniert ...:) –

+0

@MayankModi Glad :) – z22

+2

Für die Faulen zu helfen: hier ist der Code für Ihre plist (fügen Sie es am Ende des Haupt dict Knoten): ' LSApplicationQueriesSchemes \t \t \t whatsapp \t ' –

0

Schritt: 1 hinzufügen LSApplicationQueriesSchemes in Info.plist

Schritt: 2 Fügen Sie whatsapp in Artikel

1

Neben Antwort des @ z22 wenn Sie es textlich hinzufügen (zB mit Xamarin), dann sieht es aus wie dies:

<dict> 
     ... 

     <key>LSApplicationQueriesSchemes</key> 
     <array> 
      <string>whatsapp</string> 
     </array> 
    </dict> 
0

Für mich ist die Frage, weil ich wurde mit URL-Typen statt LSApplicationQueriesSchemes

und es funktioniert nur für LSApplicationQueriesSchemes

Dies wird nicht

URL types

Dies wird arbeiten Arbeit

LSApplicationQueriesSchemes