wearable_communicator

Creator: coderz1093

Last updated:

0 purchases

TODO
Add to Cart

Description:

wearable communicator

wearableCommunicator #
Communication layer between a Flutter project for Android and IOS and a companion wearable app.
This will send and receive messages and/or data to the platform specific wearable communication method. It uses the wearable data layer and messaging API's on android devices and WCSession on IPhones
Install #
πŸ€– Android #


add implementation 'com.google.android.gms:play-services-wearable:17.0.0' to the app level build.gradle


make sure that the applicationId of your WearOS app is the same as the one on your phone app


🍎 IOS #

IOS deployment target must be at least 9.3
enable bitcode in you app to support. just follow these instructions to enable apple watch for your app

How to use #

For information on how to access the sent data on wearable devices please see the example project
It is recommended to not rely on instantaneous transfer of data on IOS as applicationContext waits for a "low intensity situation" to set this value between app and watch

πŸ“€ Sending messages #
Use the static method WearableCommunicator.sendMessage(Map<String, dynamic> message); to send a single shot message.

on android the path "/MessageChannel" will be used for all messages

example send message
WearableCommunicator.sendMessage({
"text": "Some text",
"integerValue": 1
});
copied to clipboard
πŸ“¨ Receive message #
Use the static method WearableCommunicator.listenForMessage; to register a message listener function.

(android specific) if the message data is a string then the library will assume it is JSON and try to convert it. if that operation fails the message data will be sent to the listener unchanged.

Receive message example
// msg is either a Map<String, dynamic> or a string (make sure to check for that when using the library)
WearableListener.listenForMessage((msg) {
print(msg);
});
copied to clipboard
πŸ“• set data item (datalayer/userConfig) #
Use the static method WearableCommunicator.setData(String path, Map<String, dynamic> message); to set a data item with specified path (use wearOS compatible data layer paths)

(IOS specific) the path variable is used as a key within the application context dictionary
(IOS specific) data transfer is not instant and will wait for a "low intensity" moment. use this function only to set permanent low priority information

example set data
WearableCommunicator.setData("/actor/cage",{
"name": "Nicolas Cage",
"awesomeRating": 100
});
copied to clipboard
πŸ“– listen to data events #
Use the static method WearableCommunicator.listenForDataLayer; to register a data listener function.

(android specific) if the data is a string then the library will assume it is JSON and try to convert it. if that operation fails the data will be sent to the listener unchanged.

example listen for data
// data should be a Map<String, dynamic> but can also be a string under exceptional circumstances
WearableListener.listenForDataLayer((data) {
print(data);
});
copied to clipboard
πŸ“ notes #

currently does not support nested data structures on android. Therefore it is recommended to send complex items as json strings to be parsed on the recieving end
Supported types in communications are

Strings
Integers
Floats
Double
Long
Boolean
Single type lists of strings, floats, ints or longs
[TODO] Nested Maps (will be converted to JSON on android)



πŸ“‹ TODO #

βœ… Send messages from android though the messageClient
βœ… recieve messages from WearOS
βœ… Send messages from IOS though the messageClient
βœ… recieve messages from watchOS
βœ… set android data layer items
βœ… set IOS application context
βœ… recieve data layer events from wearOS
βœ… recieve data/configuration changes from watchOS (updates are not instant)
❌ Handle complex/nested data structures (not nececary for initial release)
❌ fetch data items from permanent storage (data layer/app config) note: low priority
❌ set up background service to sync data in background

Author #
πŸ•΄πŸ» Dagur ArinbjΓΆrn DanΓ­elsson
πŸ“© Email
πŸ”— LinkedIn

License

For personal and professional use. You cannot resell or redistribute these repositories in their original state.

Files In This Product:

Customer Reviews

There are no reviews.