2013-07-19 28 views
6

Tôi muốn xử lý một url như: http://www.something.com/product/3/ theo cách này:Xử lý http url với ứng dụng của tôi (nếu được cài đặt)

  • Nếu bạn đã cài đặt ứng dụng => xử lý nó với App.
  • Khác => xử lý nó bằng safari.

Điều này có khả thi không?

Ý tưởng là tôi có thể gửi url đó qua email và nếu người nhận đã cài đặt ứng dụng, thì ứng dụng sẽ khởi động và làm điều gì đó và nếu chưa được cài đặt, chỉ cần mở nó qua safari.

Tôi biết về các lược đồ tùy chỉnh, hoạt động tốt trong ứng dụng nhưng rõ ràng chúng không hoạt động trong safari vì chúng không phải là giao thức http.

+0

Không, đây không phải là có thể mà không jailbreaking. Bạn có thể yêu cầu trang web của bạn cố gắng chuyển hướng đến URL lược đồ tùy chỉnh của bạn, mặc dù ... –

+0

Hãy thử cách này: A. Làm cho ứng dụng của bạn xử lý tiện ích mở rộng html. B. Gửi email liên kết với tệp html (tệp khởi đầu hoặc tệp chuyển hướng, v.v.) – user523234

+0

@SimonM Tôi nghĩ rằng bạn là giải pháp duy nhất. Để sử dụng liên kết bình thường (http://something.com/product/3/) và trong trang web đó, hãy thử mở cửa sổ bật lên có url myscheme: //something.com/product/3/ sẽ mở ứng dụng nếu được cài đặt hoặc hiển thị một cái gì đó (có thể sẽ hiển thị tìm kiếm google bởi vì nó không hiểu myscheme như là một url web). – jobima

Trả lời

0

Không thể thực hiện điều đó. Tuy nhiên bạn có thể bao gồm trong thư cả hai liên kết:

2

Có bạn có thể làm bằng URL Scheme, Đầu tiên tạo một kế hoạch url tùy chỉnh của riêng bạn trong tập tin Info.plist

Thêm hàng mới bằng cách chuyển đến menu và nhấp vào Trình chỉnh sửa> Thêm mục. Thiết lập mục Loại URL bằng cách thêm mục mới. Mở rộng khóa Loại URL, mở rộng Mục 0 và thêm một mục mới, "Lược đồ URL". Điền vào “readtext” cho Mục 0 của “Lược đồ URL” và mã định danh công ty của bạn cho “Mã định danh URL”.

Sau đó phân tích url của bạn cho url khác nhau cho cùng một lược đồ url để mở ứng dụng của bạn với các màn hình khác nhau .. Ở đây tôi chỉ hiển thị cảnh báo, sử dụng để mở trang cụ thể theo liên kết của bạn .. Và nếu ứng dụng chưa được cài đặt sau đó nó sẽ mở trong trình duyệt web.

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    // Display text 
    UIAlertView *alertView; 
    NSString *text = [[url host] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 
    alertView = [[UIAlertView alloc] initWithTitle:@"Text" message:text delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
    [alertView show]; 
    [alertView release]; 
    return YES; 
} 

ứng dụng: handleOpenURL: (sử dụng cho iOS trước 4.1) ứng dụng: openURL: sourceApplication: chú thích: (sử dụng cho sau iOS 4.1).

+1

Điều gì nếu ứng dụng không được cài đặt? Safari có hiểu được readtext: //something.com và dịch sang http://something.com không? – jobima

+0

U có thể sử dụng canOpenURL: để kiểm tra xem nó có thể được mở hay không chuyển hướng đến trình duyệt :-) .. –

+1

Điều này không giải quyết được vấn đề, vì chạy canOpenURL tôi cần ứng dụng được cài đặt. Vấn đề vẫn như cũ: khi ứng dụng chưa được cài đặt, tôi chỉ có một URL mà safari không hiểu (myscheme: //something.com) – jobima

2

1) Tạo lược đồ URL tùy chỉnh trong ứng dụng của bạn. Theo liên kết nếu bạn không biết cách tạo lược đồ URL tùy chỉnh: http://www.idev101.com/code/Objective-C/custom_url_schemes.html

2) Sau đó thêm tập lệnh sau vào URL mà bạn muốn ứng dụng của mình mở.

<script language="javascript" type="text/javascript"> 
    var iOS = (navigator.userAgent.match(/(iPad|iPhone|iPod)/g) ? true : false); 
    var appUrlScheme = "myappscheme://" + document.URL; 
    if (iOS) { 
     window.open(appUrlScheme, "_self"); 
    } 
</script> 

Kịch bản là tự giải thích, nếu một thiết bị iOS của mình sau đó nó chỉ đơn giản là cố gắng để mở url hiện tại với url chương trình tùy chỉnh của bạn ví dụ: myappscheme://whateverurl.com'. If you app is installed on the device then iOS is going to launch your app and pass this URL to handleOpenURL function, otherwise mobile safari will silently ignore cửa sổ.open` gọi và trang web của bạn sẽ được tải như bình thường:

3) Thực hiện phương pháp handleOpenURL callback trong appdelegate bạn để xử lý URL:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    NSLog(@"url: %@", url); 
    NSLog(@"query string: %@", [url query]); 
    NSLog(@"host: %@", [url host]); 
    NSLog(@"url path: %@", [url path]); 

    //REDIRECT USER TO A VIEW CONTROLLER 

    return YES; 
} 
+0

Điều này không hiệu quả đối với tôi khi ứng dụng chưa được cài đặt - Tôi gặp lỗi khi nói "Không thể mở trang. Safari không thể mở trang vì địa chỉ không hợp lệ". – davidwebster48

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