2013-07-31 30 views
7

Tôi đang cố gắng gửi một số văn bản kèm theo một URL bằng cách sử dụng lược đồ URL tùy chỉnh của WhatsApp. Có vẻ như chỉ có một tham số hợp lệ cho mục đích này: text:Gửi URL cùng với văn bản bằng cách sử dụng lược đồ URL của WhatsApp

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

vấn đề này được đưa ra khi tôi muốn thêm URL của riêng tôi để văn bản đó. Tôi đã lựa chọn để mã hóa nó bằng cách sử này:

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

URL được gửi đến WhatsApp cùng với văn bản nhưng nó không được giải mã đứng về phía của WhatsApp:

WhatsApp not decoding the URL

Bất kỳ ý tưởng? Cảm ơn bạn!

Trả lời

10

Bạn đang tiếp cận chính xác, nhưng có vẻ như URL đang được mã hóa kép. Đảm bảo cả tin nhắn và URL chỉ được mã hóa một lần.

Sử dụng phương pháp mã hóa tương tự, bạn có thể làm điều gì đó giống như vậy:

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

Điều đó sẽ cung cấp cho bạn địa chỉ URL để thực hiện:

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

Điều đó làm theo cách của mình vào WhatsApp giống như bạn' d mong đợi. (Tôi xác nhận để làm cho đôi chắc chắn.)

+0

OMG! Đó là như nó! Tôi đã có một "ẩn" stringByAddingPercentEscapesUsingEncoding: 'gọi sau cuộc gọi mã hóa ... OMG ... Cảm ơn bạn !!! – Sendoa

10

Đây là mã hoàn chỉnh để gửi văn bản và URL cả 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

điều này sẽ không làm việc cho tôi – Jitendra

+1

Điều này làm việc cho tôi, trong khi câu trả lời chấp nhận bằng cách nào đó không. –

+0

cảm ơn bạn. @ MuratÖgat –

2

Nó sẽ làm việc cho Chia sẻ liên kết trên 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 
} 
Các vấn đề liên quan