2013-07-31 5 views
7

Sto tentando di inviare del testo accompagnato da un URL utilizzando lo schema URL personalizzato di WhatsApp. C'è a quanto pare solo un parametro valido per questo scopo: text:Invio di un URL accanto al testo utilizzando lo schema URL di WhatsApp

NSURL *whatsappURL = [NSURL URLWithString:@"whatsapp://send?text=Hello%2C%20World!"]; 

Il problema arriva quando voglio aggiungere il mio URL di quel testo. Ho optato per codificare utilizzando questo:

NSString *encodedURLString = (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(
                        NULL, 
                        (CFStringRef)urlAbsoluteString, 
                        NULL, 
                        (CFStringRef)@"!*'();:@&=+$,/?%#[]", 
                        kCFStringEncodingUTF8)); 

L'URL viene inviato al WhatsApp a fianco del testo, ma che non venga decodificato dalla parte del WhatsApp:

WhatsApp not decoding the URL

Tutte le idee? Grazie!

risposta

10

Si sta avvicinando correttamente, ma sembra che l'URL sia codificato in doppia. Assicurati che il messaggio e l'URL siano codificati una sola volta.

Utilizzando il medesimo metodo di codifica, si può fare qualcosa in questo modo:

NSString *urlAbsoluteString = @"Hello World! http://yayvisitmysiteplease.com?funky=parameter&stuff"; 
NSString *encodedURLString = ... 

Che dovrebbe darvi l'URL da eseguire:

whatsapp://send?text=Hello%20World%21%20http%3A%2F%2Fyayvisitmysiteplease.com%3Ffunky%3Dparameter%26stuff 

che si fa strada in WhatsApp come te' d aspettarsi. (Ho verificato di fare doppio sicuro.)

+0

OMG! Era così! Ho avuto un "hidden" 'stringByAddingPercentEscapesUsingEncoding:' chiamata dopo la chiamata alla codifica ... OMG ... Grazie !!! – Sendoa

10

Questo è completo di codice per inviare testo e l'URL sia in WhatsApp

NSString * msg = @"Application%20Name%20https://itunes.apple.com/YOUR-URL"; 

    msg = [msg stringByReplacingOccurrencesOfString:@":" withString:@"%3A"]; 
    msg = [msg stringByReplacingOccurrencesOfString:@"/" withString:@"%2F"]; 
    msg = [msg stringByReplacingOccurrencesOfString:@"?" withString:@"%3F"]; 
    msg = [msg stringByReplacingOccurrencesOfString:@"," withString:@"%2C"]; 
    msg = [msg stringByReplacingOccurrencesOfString:@"=" withString:@"%3D"]; 
    msg = [msg stringByReplacingOccurrencesOfString:@"&" withString:@"%26"]; 

    NSString * urlWhats = [NSString stringWithFormat:@"whatsapp://send?text=%@",msg]; 
    NSURL * whatsappURL = [NSURL URLWithString:urlWhats]; 
    if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) 
    { 
     [[UIApplication sharedApplication] openURL: whatsappURL]; 
    } 
    else 
    { 
     UIAlertView * alert = [[UIAlertView alloc] initWithTitle:@"WhatsApp not installed." message:@"Your device has no WhatsApp installed." delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
     [alert show]; 
    } 
+1

questo non funziona per me – Jitendra

+1

Questo ha funzionato per me, mentre la risposta accettata in qualche modo no. –

+0

grazie. @ MuratÖgat –

2

Si lavorerà per Condividi link su Whats App

NSString * url = [NSString stringWithFormat:@"http://video...bla..bla.."]; 
url = (NSString*)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,(CFStringRef) url, NULL,CFSTR("!*'();:@&=+$,/?%#[]"),kCFStringEncodingUTF8)); 

NSString * urlWhats = [NSString stringWithFormat:@"whatsapp://send?text=%@",url]; 
NSURL * whatsappURL = [NSURL URLWithString:urlWhats]; 
if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) { 
[[UIApplication sharedApplication] openURL: whatsappURL]; 
} else { 
// can not share with whats app 
}