Phát hiện phiên bản watchOS của người dùng từ ứng dụng iOS


13

Tôi có một ứng dụng iOS nơi tôi có một số cài đặt trong ứng dụng iOS liên quan đến đồng hồ. Tôi chỉ muốn hiển thị cho họ nếu người dùng có Apple Watch tương thích với ứng dụng của tôi.

Trong WatchConnectivity, tôi có thể truy vấn thuộc tính isPaired của WCSession để xem người dùng có đồng hồ không nhưng tôi không thể tìm ra cách xác định phiên bản watchOS (cần phải có> 5.0 để sử dụng ứng dụng của tôi).

Có cách nào để xác định phiên bản watchOS từ ứng dụng iOS không?


Tôi không nghĩ bạn có thể kiểm tra phiên bản watchOS từ iOS. Tuy nhiên, bạn có thể liên lạc giữa ứng dụng đồng hồ từ ứng dụng iOS để lấy thông tin bạn cần.
Lei Zhang

Cảm ơn nhưng tôi vẫn không thể biết được sự khác biệt giữa người dùng có đồng hồ trên watchOS 4 và không thể cài đặt ứng dụng đồng hồ so với người dùng trên watchOS 5 có thể cài đặt ứng dụng đồng hồ nhưng không
Stephen

@Stephen hãy thử lấy thông tin từ bluetooth mà bạn quan tâm đến Link1 Link2
George

Ý tưởng thú vị, thật không may, chiếc đồng hồ dường như có khả năng xử lý đặc biệt khi không có sẵn thông qua các phương pháp bluetooth tiêu chuẩn
Stephen

Tại sao bạn không giới hạn watchOS Deployment Targetlà 5.0?
Starsky

Câu trả lời:


0

Thực ra isWatchAppInstalled là cách chính xác để đối phó với kịch bản này.

Như tài liệu nêu:

Người dùng có thể chọn chỉ cài đặt một tập hợp con các ứng dụng có sẵn trên Apple Watch. Giá trị của thuộc tính này là đúng khi ứng dụng Đồng hồ được liên kết với ứng dụng iOS hiện tại được cài đặt trên Apple Watch của người dùng hoặc sai khi không được cài đặt.

https://developer.apple.com/documentation/watchconnectivity/wcsession/1615623-iswatchappinstallinstall

Thuộc tính không nhìn vào bên trong gói để xem ứng dụng Đồng hồ có khả dụng hay không. Nó sẽ chỉ trả về đúng nếu ứng dụng Đồng hồ được cài đặt trên Apple Watch hiện được ghép nối. Nếu người dùng xóa Ứng dụng đồng hồ khỏi đồng hồ, nó sẽ trả về sai.


Tôi đang tìm cách để biết họ có khả năng cài đặt ứng dụng đồng hồ hay không nếu nó chưa được cài đặt. Tôi cần phân biệt nếu phiên bản watchOS tương thích với mức tối thiểu của tôi
Stephen

Trong WatchKit, có đối tượngWKInterfaceDevice, có sẵn trên cả mặt iOS và watchOS, chứa thông tin về đồng hồ được ghép nối.
jawadAli

let watchOSVersion = WKInterfaceDevice.currentDevice().systemVersion print("WatchOS version: \(watchOSVersion)")
jawadAli

bạn đã thử chưa
jawadAli

1
WKInterfaceDevice chỉ có thể được gọi trong watchOS, không phải trong iOS, xem tài liệu .
Reinhard Männer

-1

Đây là hai giải pháp có thể. Số 1 kiểm tra HĐH mà nếu tôi hiểu câu hỏi của bạn thì bạn đã biết, nhưng sau đó 2 kiểm tra phiên bản HĐH là WatchOS 5.0 trở lên. Đây là những gì tôi đã làm vì vậy tôi hy vọng nó sẽ giúp bạn.

1.

#if os(watchOS)
    ...your code          
#endif
  1. if #available(watchOS 5.0, *) {
        ...your code
    }

Điều này không hoạt động khi chạy trong ứng dụng iOS, chỉ khi đã có trên ứng dụng watchOS đã cài đặt
Stephen

Ahh, tôi đã không nghĩ về điều đó. Lấy làm tiếc. Điều gì xảy ra nếu bạn kiểm tra môi trường đích, và sau đó kiểm tra phiên bản hệ điều hành có sẵn? Nếu targetEn Môi trường có một mục tiêu watchOS.
117MasterChief96

Không chắc tôi làm theo. Bạn đang kiểm tra mục tiêu môi trường ở đâu / như thế nào?
Stephen

Tôi chưa thực sự sử dụng cái này trước đây nhưng tôi đã nghĩ như thế #if targetEnvironment(watchOS). Nếu điều đó thậm chí có thể xảy ra với watchOS, thì bên trong đó bạn có thể kiểm tra phiên bản cho watchOS 5.
117MasterChief96

Xin lỗi, đây không thực sự là những gì tôi yêu cầu. #if targetEn Môi trường là watchOS, nó sẽ cần được chạy trên đồng hồ. Tôi đang tìm kiếm một kiểm tra từ iOS
Stephen
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.