Có cách nào để kiểm tra xem một sơ đồ URL hiện có được đăng ký trên điện thoại ... với javascript không?Kiểm tra xem lược đồ URL có được hỗ trợ trong javascript
Trả lời
Không, không phải từ trang web.
Tôi nghĩ rằng tôi nhớ lại một cách mà các ứng dụng có thể kiểm tra điều này nhưng tôi có thể sai. –
Cảm ơn câu trả lời nhanh. Theo như mã gốc, có thể thông qua openUrl: để kiểm tra, vì vậy tôi đã đọc ... chưa được kiểm tra –
@Brent Royal-Gordon: Không. Ứng dụng iPhone gốc có thể kiểm tra bằng cách gọi ** canOpenURL: **. –
Không liền mạch. Nhưng có một cách tương tự để kiểm tra xem một cửa sổ bật lên có bị chặn hay không.
Khi bạn thử lược đồ URL không được hỗ trợ, Safari sẽ cảnh báo người dùng rằng họ không biết phải làm gì với nó và ở lại trên cùng một trang.
Vì vậy, nếu bạn đã gọi cho ứng dụng của mình một thời gian để kích hoạt, hãy nói 300 mili giây và sau đó thực hiện một việc khác để phản hồi sự không tồn tại của lược đồ.
Nó không phải là đẹp nhất nhưng nó hoạt động:
function startIThrown(){
document.location = 'ithrown://restart';
setTimeout(function(){
if(confirm('You do not seem to have iThrown installed, do you want to go download it now?')){
document.location = 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293049283&mt=8&uo=6';
}
}, 300);
}
<a href="#" onclick="startIThrown()">Restart iThrown</a>
workaround tốt đẹp :) –
Đó là giá trị một thử, nhưng thực sự đây là kinda một giải pháp khó chịu. Hàm đó được gọi ngay cả khi lược đồ URL đi qua khi bạn quay lại trang. Vì vậy, người dùng sẽ nhận được thông báo bật lên bất kể điều gì. Hoặc là 1 hoặc 2, tùy thuộc vào việc thiết bị của anh có hỗ trợ chương trình hay không. – samvermette
@samvermette Có giải pháp thay thế phức tạp. Nếu lược đồ url hoạt động, sau đó yêu cầu ứng dụng gửi xác nhận đến máy chủ của bạn. Sau đó, khi bạn quay lại ứng dụng, hãy ping máy chủ để xem ứng dụng đã được mở thành công chưa. Phức tạp, nhưng khả thi. – Amir
Đây là một giải pháp mà không hiển thị popup khi bạn trở về từ ứng dụng, nó giả sử bạn đã trải dài hơn 400 ms:
function startiThrown() {
document.location = appurl;
var time = (new Date()).getTime();
setTimeout(function(){
var now = (new Date()).getTime();
if((now - time)<400) {
if(confirm('You do not seem to have iThrown installed, do you want to go download it now?')){
document.location = 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293049283&mt=8&uo=6';
}
}
}, 300);
}
Chúng tôi đã gặp sự cố trong đó biến "hiện tại" trong giải pháp này bị sai lệch. Chúng tôi có thể đợi vài phút trong ứng dụng, quay lại trình duyệt và nhận xác nhận. Có vẻ như quá trình đánh thức ngủ đông là lỗi. – JoshNaro
Đây là biến thể của 2 giải pháp trước. Nó sẽ tạo một liên kết có thể được mở trong Google Chrome. Nếu nó không thành công nó sẽ mở ra các liên kết sử dụng http
<script>
function checkChrome(h){
document.location=h;
var time = (new Date()).getTime();
setTimeout(function(){
var now = (new Date()).getTime();
if((now-time)<400) {
if(confirm('Missing Chrome. Download it now?')){
document.location = 'http://itunes.apple.com/us/app/chrome/id535886823?mt=8';
} else {
document.location=h.replace('googlechrome','http');
}
}
}, 300);
}
</script>
<a href="googlechrome://www.google.com" onclick="checkChrome(this.href);return false;">Open Google with Chrome</a>
Một lớn (ít nhất là làm việc trong các phiên bản trình duyệt mới nhất) Cách giải quyết là để kiểm tra xem cửa sổ trình duyệt đã tập trung sau một thời gian chờ ngắn, bằng cách này bạn có thể hiển thị một hộp thoại cho người sử dụng chỉ khi URI scheme đã không làm việc
HTML:
<a class="uri-link" data-uri="qobuzapp://" href="#">URI</a>
Javascript (sử dụng jQuery đây):
var windowHasFocus;
$(window).focus(function() {
windowHasFocus = true;
}).blur(function() {
windowHasFocus = false;
});
function goToUri(uri) {
window.location = uri;
setTimeout(function(){
if (windowHasFocus) {
if (confirm('You do not seem to have Qobuz installed, do you want to go download it now?')){
window.location = 'http://www.qobuz.com';
}
}
}, 100);
}
$('a').on('click', function(){
goToUri($(this).data('uri'));
});
Đây là một jsFiddle làm việc, chỉ cần cập nhật nó với URI scheme của riêng bạn: http://jsfiddle.net/mF6TZ/
jsfiddle đã chết – jcesarmobile
tôi thấy pagehide
sự kiện để được mạnh mẽ hơn tùy thuộc vào thời gian hệ thống. Đối với những người trong chúng ta, những người thích ưu tiên không phải jQuery, thì đây là đoạn trích.
var appurl = 'custom://url';
var appstore = 'https://itunes.apple.com/us/app/your-app';
var timeout;
function preventPopup() {
clearTimeout(timeout);
timeout = null;
window.removeEventListener('pagehide', preventPopup);
}
function startApp() {
window.location = appurl;
timeout = setTimeout(function(){
if(confirm('You do not seem to have the App installed, do you want to go download it now?')){
document.location = appstore;
}
}, 1000);
window.addEventListener('pagehide', preventPopup);
}
Bắt đầu từ iOS 6.0 của Apple đã trình bày App Biểu ngữ thông minh mà làm những gì hầu hết chúng ta đang tìm kiếm:
- Gửi cho App Store nếu ứng dụng không được cài đặt.
- Mở ứng dụng có liên kết sâu cụ thể, sử dụng thông số đối số ứng dụng.
Bao gồm các thẻ meta sau:
<meta name="apple-itunes-app" content="app-id=myAppStoreID, affiliate-data=myAffiliateData, app-argument=myURL">
lấy từ đây: Safari Web Content Guide
Tôi có nhận xét này https://stackoverflow.com/a/18715513/49114 với một plugin jQuery để thêm liên kết ứng dụng thay thế cho các liên kết thường xuyên.
Plugin không giải quyết được sự cố cảnh báo khi bạn KHÔNG CÓ ứng dụng được cài đặt – Magico
Tôi cố gắng chỉ sử dụng sự kiện 'pagehide', nhưng sau đó nó không hoạt động trong Firefox. Tôi đã tạo phiên bản này tại đây http://jsfiddle.net/thiagomata/6tvoc4f1/2/ những gì hoạt động trong Firefox, Google Chrome và Safari. Tôi chưa thử nghiệm trong Internet Explorer.
Một điều cần thiết để làm cho nó hoạt động trong Firefox, đã sử dụng iframe để đặt src. Điều này cho phép tôi gọi ứng dụng mà không cần rời khỏi trang của mình.
<a class="uri-link" href="#"
data-uri-app="myapp://"
data-url-app-not-found="http://www.google.com?q=not-found-link"
>
Example 1
</a>
<a class="uri-link" href="#"
data-uri-app="myapp://"
data-url-app-not-found="http://www.google.com?q=not-found-link"
data-url-app-found="http://www.google.com?q=found-link"
>
Example 2
</a>
<a class="uri-link" href="#"
data-uri-app="notexists://"
data-url-app-not-found="http://www.google.com?q=not-exists"
>
Example 3
</a>
<iframe id="callapp" style="display:none"></iframe>
khái niệm đẹp. mặc dù các ứng dụng tìm thấy không xảy ra bao giờ hết. Ngay cả khi ứng dụng được cài đặt (tôi đã thử instagram: // app), nó sẽ kích hoạt ứng dụng không có sẵn. –
Bạn đã cố gắng làm cho thời gian chờ lớn hơn? Thay đổi giá trị trong dòng 95 từ 1000 đến 9000 (chỉ để cho vui) và cho tôi biết điều gì sẽ xảy ra. –
Điều này dựa trên câu trả lời của mrahman. Như đã lưu ý, bởi JoshNaro Ngày mới() trả lại ngày sai khi được gọi trong thời gian chờ. Các thử nghiệm cho thấy ngày tháng không được cập nhật trong các chủ đề được bắt đầu trước khi ứng dụng bị hủy kích hoạt.
Một setTimeout xấu xí nữa được gọi sau khi kích hoạt sẽ tạo một chuỗi mới với ngày hiện tại.
này đã được thử nghiệm trên iOS 8.
function startiThrown() {
document.location = appurl;
var time = (new Date()).getTime();
setTimeout(function(){
setTimeout(function(){ // <-- start new thread after activation
var now = (new Date()).getTime();
if((now - time)<400) {
if(confirm('You do not seem to have iThrown installed, do you want to go download it now?')){
document.location = 'http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=293049283&mt=8&uo=6';
}
}
}, 10); // <-- start new thread after activation
}, 300);
}
- 1. Postgresql: Kiểm tra xem lược đồ có tồn tại không?
- 2. Kiểm tra xem URL có bị hỏng trong Javascript
- 3. Kiểm tra xem javascript có được bật
- 4. NHibernate có thể kiểm tra xem lược đồ db đã được tạo chưa?
- 5. Cách kiểm tra xem tệp có được hỗ trợ bởi videoview android bằng mã không?
- 6. Hỗ trợ SQLAlchemy của các lược đồ Postgres
- 7. Khung kiểm tra nào cho Javascript hỗ trợ Kiểm tra mà không cần trình duyệt?
- 8. Kiểm tra xem JS có hỗ trợ thuộc tính CSS không?
- 9. Cách Kiểm tra xem trình duyệt có hỗ trợ HTML5 không?
- 10. DataTable không hỗ trợ suy luận lược đồ từ Xml.?
- 11. Hỗ trợ getter JavaScript trong IE8
- 12. Cách kiểm tra sơ đồ url tùy chỉnh trên iphone?
- 13. Chương trình vẽ biểu đồ nguồn mở hỗ trợ kiểm tra biểu đồ phẳng?
- 14. JavaScript: Kiểm tra xem nút CTRL có được nhấn
- 15. Cách kiểm tra xem gửi() của XMLHttpRequest có hỗ trợ Tệp
- 16. JavaScript có được hỗ trợ trong email không?
- 17. Cách kiểm tra xem phông chữ có hỗ trợ kiểu cụ thể
- 18. Cách kiểm tra xem trình duyệt có hỗ trợ thuộc tính giữ chỗ gốc không?
- 19. g ++ cách kiểm tra xem nó có hỗ trợ các hàm lambda không?
- 20. Javascript để kiểm tra xem hộp kiểm có đang được chọn hay không được chọn
- 21. Gmail như lược đồ URL
- 22. Kiểm tra xem url có hợp lệ hay không
- 23. Cách hỗ trợ kiểm tra MBUnit trong Resharper 7
- 24. Có cách nào để kiểm tra xem trình duyệt di động có hỗ trợ flash bằng công nghệ web không?
- 25. Cách kiểm tra xem JCheckBox có được kiểm tra không?
- 26. Kiểm tra xem URL có http: // tiền tố
- 27. Kiểm tra xem ngày có trong quá khứ Javascript
- 28. JAX-WS có lược đồ XSD trong URL khác nhau
- 29. Kiểm tra xem URL có tồn tại hay không
- 30. python: kiểm tra xem url có tồn tại jpg không.
tôi tìm thấy giải pháp được đăng ở đây để làm việc tốt hơn nhiều: http://stackoverflow.com/questions/6964515/launching-app-or- app-store-from-safari – portforwardpodcast