2015-12-17 58 views
5

Nel mio progetto corrente devo condividere il testo su whatsapp dall'app iOS.iOS9: canOpenURL che restituisce false per lo schema di URL di WhatApp

Ecco il mio codice di condividere testo su WhatsApp: -

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

ma canOpenURL tornare sempre false in iOS9.

Esiste una politica sulla privacy di iOS9? Qualcuno può darmi una mano.

Grazie in anticipo.

+1

w con iOS 9, è stata introdotta la sicurezza del trasporto Apple. Forse ha qualcosa a che fare con questo. In pratica dice che non puoi più inviare richieste non protette. Ma non sono sicuro che sia il problema in questo caso. – dan

+2

forse questo può aiutarti http://stackoverflow.com/questions/30987986/ios-9-not-opening-instagram-app-with-url-scheme – dan

+0

ATS non ha nulla a che fare con questo. Apple ha introdotto un sistema separato che richiede di specificare in "info.plist" gli schemi che un'app utilizzerà, ma è completamente ortogonale rispetto a ATS. – Avi

risposta

36

in iOS 9 è necessario whitelist eventuali schemi URL tua App vuole interrogare in Info.plist sotto la chiave LSApplicationQueriesSchemes (un array di stringhe):

Ad esempio:

enter image description here

Così nel tuo caso, invece di fb e twitter dovrai specificare whatsapp.

Si noti che questo meccanismo si applica solo a canOpenURL e non a openURL. Non è necessario disporre di uno schema elencato in Info.plist per poterlo aprire con openURL. Spero che questo aiuti.

+1

grazie. Lavoro ...:) –

+0

@MayankModi Felice di aiutare :) – z22

+2

Per i più pigri: qui è il codice per la plist (aggiungerlo alla fine del nodo dict principale): ' LSApplicationQueriesSchemes \t \t \t whatsapp \t ' –

0

Fase: 1 Aggiungi LSApplicationQueriesSchemes in Info.plist

Passaggio: 2 Aggiungere WhatsApp disponibile articoli

1

Oltre alla risposta di @ Z22 se è necessario inserirlo testualmente (ad esempio con Xamarin) allora sembra proprio questo:

<dict> 
     ... 

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

Per me il problema è stato perché mi stava usando tipi di URL invece di LSApplicationQueriesSchemes

e funziona solo per LSApplicationQueriesSchemes

Questo non funziona

URL types

Questo sarà lavoro

LSApplicationQueriesSchemes