2013-07-31 8 views
7

Próbuję wysłać tekst z adresem URL za pomocą niestandardowego schematu URL WhatsApp. Jest widocznie tylko jeden ważny parametr w tym celu: text:Wysyłanie adresu URL wraz z tekstem przy użyciu schematu adresu URL WhatsApp

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

Problem pojawia się gdy chcę dołączyć własne URL do tego tekstu. Zdecydowałem zakodować go przy tym:

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

URL jest przesyłany do WhatsApp obok tekstu, ale nie uzyskać dekodowane po stronie WhatsApp za:

WhatsApp not decoding the URL

jakieś pomysły? Dziękuję Ci!

Odpowiedz

10

Podchodzisz do tego poprawnie, ale wygląda na to, że adres URL jest podwójnie zakodowany. Upewnij się, że zarówno wiadomość, jak i adres URL są zakodowane tylko raz.

Używając tej samej metody kodowania, można zrobić coś tak:

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

To powinno dać Ci adres URL do wykonania:

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

sprawia, że ​​jego droga do WhatsApp jak ty” d oczekiwać. (I zweryfikowane, aby upewnić się dwukrotnie).

+0

OMG! Tak było! Miałem "ukryte" połączenie 'stringByAddingPercentEscapesUsingEncoding:' później po wywołaniu kodowania ... OMG ... Dziękuję !!! – Sendoa

10

To jest kompletny kod, aby wysłać tekst i adres URL zarówno w 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

to nie zadziała dla mnie – Jitendra

+1

To zadziałało dla mnie, podczas gdy zaakceptowana odpowiedź jakoś nie zadziałała. –

+0

dziękuję. @ MuratÖgat –

2

Będzie pracować dla Share Link na 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 
}