2015-01-06 24 views
20

Có cách nào để thông báo cho người dùng trong Apple Watch rằng iPhone hiện nằm ngoài phạm vi phủ sóng và khi nó trở lại tầm hoạt động. Làm thế nào chúng ta có thể làm điều đó trong phần mở rộng xem.Cách kiểm tra xem đồng hồ iPhone và Apple có được kết nối không

Xin cảm ơn trước.

+0

Hiện tại không có thông báo hoặc đại biểu nào sẽ cho bạn biết rằng điện thoại không thể tiếp cận được. Chỉ cần suy nghĩ: có lẽ bạn có thể sử dụng [openParentApplication] (https://developer.apple.com/library/prerelease/ios/documentation/WatchKit/Reference/WKInterfaceController_class/index.html#//apple_ref/occ/clm/WKInterfaceController/ openParentApplication: trả lời :) và xem bạn có thể ping iPhone không. Chỉ là một linh cảm, đã không thử nó. – GoodSp33d

Trả lời

0

Từ điểm kiến ​​thức hiện tại, điều này có thể không thực hiện được.

Từ của Apple WatchKit App Architecture

Sau khi chọn cảnh, WatchKit nói iPhone cặp để khởi động mở rộng WatchKit của bạn và tạo các đối tượng cần thiết để quản lý mà cảnh. Khi cảnh được cấu hình đầy đủ, nó sẽ được hiển thị trên Apple Watch. Việc chuyển thông tin giữa ứng dụng WatchKit và số mở rộng WatchKit xảy ra một cách rõ ràng đằng sau hậu trường.

Điều đó có nghĩa là mã được thực thi trên iPhone. Nếu iPhone không thể tiếp cận, bạn sẽ không thể chạy ứng dụng trên đồng hồ.

+0

Thực ra, chúng tôi cần hiển thị chế độ xem cảnh báo khi điện thoại hết tầm với. Tôi đoán nên có một số cách. –

+1

@MohitTotlani no, nếu iPhone không hoạt động, ứng dụng đồng hồ sẽ bị thoát vì không thể chạy mà không có điện thoại! –

1

Từ quan điểm chính thức, Apple chưa đưa ra bất kỳ dấu hiệu nào về cách xử lý này.

Tuy nhiên, do khu vực ghép nối và giao tiếp được xử lý bởi HĐH mà không có sự tham gia của ứng dụng, dường như chắc chắn rằng mọi thông báo cho người dùng liên quan đến sự cố kết nối trên đồng hồ (và ở đầu điện thoại) sẽ được hệ điều hành Xem cũng. Dự đoán của tôi là người dùng sẽ có cơ hội giải quyết mất kết nối hoặc thoát khỏi ứng dụng Xem nếu họ không thể. Theo quan điểm của nhà phát triển, rất có thể ứng dụng của chúng tôi sẽ không thể phân biệt giữa mất kết nối chưa được giải quyết và người dùng thoát ứng dụng bình thường, với cùng một thông báo được gửi tới Tiện ích xem cho một trong hai, nhưng đây chỉ là phỏng đoán . Cần lưu ý rằng không có mã nhà phát triển bên thứ ba nào chạy trên đồng hồ cho các ứng dụng Đồng hồ hiện tại, chỉ là giao diện người dùng, vì vậy ngay cả mất kết nối chưa được giải quyết sẽ không dẫn đến mất dữ liệu. Nếu Tiện ích xem (chạy trên iPhone) bị hệ điều hành bỏ do mất kết nối với đồng hồ, nó vẫn có thể thực hiện lưu trữ và dọn dẹp dữ liệu thông thường.

8

Vì vậy, trên WatchOS 2, điều đó là có thể!

Bạn phải làm trên iPhone bên:

Đầu tiên:

import WatchConnectivity 

Sau đó:

if WCSession.isSupported() { // check if the device support to handle an Apple Watch 
     let session = WCSession.defaultSession() 
     session.delegate = self 
     session.activateSession() // activate the session 

     if session.paired { // Check if the iPhone is paired with the Apple Watch 
       // Do stuff 
     } 
    } 

Tôi hy vọng nó sẽ giúp bạn :)

+1

Có thông báo nào trên đồng hồ sẽ được kích hoạt khi kết nối với iPhone đột nhiên bị ngắt kết nối không? –

+0

Có tất nhiên! Sau đó, bạn sẽ thấy một điện thoại hủy màu đỏ trên đồng hồ của bạn: – BilalReffas

+0

Tôi có thể quan sát thông báo đó trong tiện ích watchkit hoặc ứng dụng gốc watchkit của mình như thế nào? –

-1

Bạn có thể tìm thấy tất cả thông báo thay đổi trạng thái kết nối trong WCSession documentation.

5

Với watchOS 2.0, bạn có thể. Để thực hiện điều này, bạn sẽ thêm chúng vào ExtensionDelegate của bạn nếu bạn muốn Apple Watch của bạn để nhận được thông báo:

func watchKitSetup() {  
    if (WCSession.isSupported()) { 
     let session = WCSession.defaultSession() 
     session.delegate = self 
     session.activateSession() 

     // In your WatchKit extension, the value of this property is true when the paired iPhone is reachable via Bluetooth. 
     // On iOS, the value is true when the paired Apple Watch is reachable via Bluetooth and the associated Watch app is running in the foreground. 
     // In all other cases, the value is false. 
     if session.reachable { 

     } 
    } 
} 

func applicationDidFinishLaunching() { 
    self.watchKitSetup() 
} 

// Called when session.reachable value changes, such as when a user wearing an Apple Watch gets out of range of their iPhone. 
func sessionReachabilityDidChange(session: WCSession) { 
    if session.reachable { 

    } 
} 

Bạn cũng nên thêm WCSessionDelegate để ExtensionDelegate của bạn.

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