2009-03-13 23 views
9

Tôi có URL Dữ liệu: (xem: http://en.wikipedia.org/wiki/Data_URI_scheme) (dưới dạng NSString) và tôi muốn mở nó trong Safari. Làm thế nào bạn sẽ thực hiện điều này (tôi đã cố gắng openURL :.)
Ví dụ:iPhone Mở DỮ LIỆU: Url Trong Safari

data:text/html;base64,(Some Base64 Encoded Data Here) 
+0

nó có thể giúp hiển thị URL. Có lẽ nó được hình thành tồi tệ. –

+0

openURL nên hoạt động (đó là ý nghĩa của nó!) Điều gì đã xảy ra khi bạn thử sử dụng openURL? – hhafez

+0

Tôi đã thực sự nhìn thấy công việc này ... không thể làm cho nó hoạt động bản thân mình nhưng cố gắng ... – Jonny

Trả lời

6

Trong iPhone OS 2.2.1 và 5.0.1, trong cả hai mô phỏng và trên một thiết bị, mở một dữ liệu: url hoạt động hoàn hảo trong một UIWebView nhưng sử dụng openURL không chính xác gì cả.

Và Safari sẽ sẵn sàng và đúng cách, hiển thị URL đó nếu bạn muốn nhập URL vào thanh điều hướng, vì vậy đây rõ ràng là sự cố với sharedApplication openURL, không phải với Safari.

Nếu chuỗi base64 đủ ngắn (nhỏ hơn 2K, có thể) bạn có thể bọc nó dưới dạng tham số truy vấn vào URL http chỉ trả về chuyển hướng đến url dữ liệu. Sau đó, bạn có thể sử dụng openURL để mở URL http. Có, điều này có nghĩa là nảy qua một số máy chủ, nhưng nó sẽ hoạt động.

Ngoài ra, kể từ Safari rõ ràng đã không làm được điều đó, bạn có thể nói với iPhone rằng ứng dụng của bạn là xử lý cho dữ liệu : chương trình và chịu trách nhiệm để hiển thị các nội dung trong một UIWebView. Điều này dường như có khả năng thất bại trong tương lai, mặc dù. :-)

URL dữ liệu đến từ đâu ngay từ đầu? Có lẽ bạn có thể xây dựng một trang web có nội dung không có gì hơn <iframe src="<the data url>"/> và một lần nữa, sử dụng openURL trên URL đó.

-1

này nên làm điều đó:

NSURL *yourURL = [[NSURL alloc] initWithString:yourStr];  
[[UIApplication sharedApplication] openURL:yourURL]; 
[yourURL release]; 

giả "yourStr" là một nSTRING với URL nơi dữ liệu của bạn nằm .

+0

Không hoạt động - xem các bình luận của bài viết của hhafez. –

+0

Một cách để có được xung quanh đó có thể là chỉ hiển thị nó trong một đối tượng UIWebView. Đó là về cơ bản Safari, nhưng hoàn toàn nằm trong ứng dụng của riêng bạn. – GoatRider

+0

Tôi cần người dùng có thể đánh dấu trang - vì vậy Safari là tùy chọn duy nhất. –

Các vấn đề liên quan