Added Nest Hello to existing account - does not show in the devices GET - nest-device-access

I have a long-standing account with 2 nest thermostats in it, that I use to test my Nest device access integration. I recently added a Nest Hello to the same account, which works and displays fine in the Nest app.
I used my Nest device access integration to query the devices, and the nest hello is not reported.
I re-oauth authorized, and the nest hello doesn't show in the choices of devices to enable access to (see attached screen shot).
Is there some setting in my device access project to enable doorbell access that I've missed? Any other ideas what could be wrong?

Faced the same problem with a nest camera. The image was showing in the nest app but the device was not listed. I added the nest device as a new product and it started to be listed properly.

Related

Best practice for screen/page tracking across Web and Mobile app using Google Analytics

My product consists of a website, an iOS app, and an Android app. All of them are having the same set of screens.
I try to set up them so that I can see combined analytics data (e.g. average engagement time on each screen, screen view, interesting app event) in Google Analytics. I wonder what is the best practice to achieve that.
I set up a GA4 property with 3 data streams for Android app, iOS app, and website. I let Android app and iOS app manually send screen_view event with the same screen name. This way it is possible to see analytics data like avg. engagement time from Android/iOS combined.
But for website, gtag.js uses page_view and it logs 3 informations: page_title (default=document.title), page_location (default=location.href), and page_path (default=location.pathname).
In GA dashboard > Engagement > Screen and Page, they provided data filters of 4 possibilities:
Page title and screen class
Page path and screen class
Page title and screen name
Content group
It seems I have the following choices:
Let my website to manually send page_view with page_title=screen name that app is using. Then I can see combined engagement data using Page title and screen name option.
Let my app (iOS and Android) to send screen class as page path. Then use Page path and screen class.
The 1st choices is more feasible for me, but still require a lot of effort. Is there any other solution to achieve this?
Another option is to come up with own event - it requires a lot of effort. Such as event name page [name: <anything from app/website>].
Anyway from my experience I recommend to use built-in events page_view, screen_view for better manipulation across GA4, BigQuery, DataStudio. GA4 interface is built for such events.
For naming screens I recommend to create (at least) google sheet documentation with 3 columns (at least) - Web, Android, iOS. At the end you will end up with amazing GA4 capabilities. Think about Pareto principle 80/20, it is not required to log all of the interactions.

Flutter/Dart/Firebase - Reduce unnecessary data loading

I tried searching my specific problem but I could not find any suitable solution.
I would like to thank everybody in advance for your help.
I am currently developing an iOS app.
The App represents a user profile which can be updated by the user.
Everything from the authentication, registration and the possibility to update your user data works fine with the help of Firebase. Now I would like to optimize some code.
So the application has 2 Screens, HomeScreen and EditScreen.
(Besides the Screens needed for registration and login).
To keep my question short:
How can I reduce the amount of data which is loaded from firebase?
Example:
1. User is on the HomeScreen, to build the view his image loads from Firebase Storage
2. He wants to edit his Image and therefore switches to the Editscreen, where his image will be loaded again
3. After changing his image, the new image will be uploaded to Firebase Storage and he can see his new image on the Editscreen
4. If he now switches back to the HomeScreen his new image will be loaded again from Firebase
Is there a good way to reduce the amount of loading?
Like caching the image between step 1 and 2?
As there is always a little delay in displaying his image.
Thanks!
Sadly I am not allowed to share any code.
You can check out the flutter_advanced_networkimage package. It will cache your photo upon load. For everything else, you should just move your profile object (or whatever it is that calls for the firebase user's information) above those routes and pass it down through your widget tree through arguments or state management.

Add device to nest devices list

I am using sample application control-jquery-master provided on developer.nest.com. I can access first device for e.g. thermostat as written in the code. It shows on the html page http://localhost:8080 with status "INSIDE" and two buttons "UP" arrow and "DOWN" arrow. Now, I want to add my own device instead of "thermostat" something like "mysensor" with different properties that can be set or retrieved. Is it possible to do that? If yes, what are the API, If not does it mean we can only use thermostat, smoke detector sensors which are provided by nest?
My question is how to access and modify the JSON document? Where is it stored?
Best Regards,
Sonal
The only way to add your own sensor(s) to the devices JSON payload is to make use of the Product data read/write permission.
This Nest API doc outlines the steps necessary to reach a working implementation.
The only way to add more physical Nest devices to an account is by doing so on their site or with their app. You can add virtual devices using their Chrome extension: Nest Home Simulator

Best way to present alternate view to user

In my Apple Watch app, I need to have a way to be able to notify the user that they must first set something from within the iPhone version of my app before they can use the Watch App. Obviously, I need to do to this through a few labels and images, however the layout of these is different to the layout of the main views in my app.
How can I present the user with a different view based on the status of the iPhone app, that they cannot see unless required? The way I would do something similar in a normal app would be to just push to a different view controller, but obviously this is not possible in a watch app.
Any ideas?
You could always present a modal interface controller. Alternatively, you could create a separate group in your root controller's view and show/hide that as necessary.
To check the status of the iPhone app, the easiest solution would likely be to use a shared NSUserDefaults suite between the iPhone app and the Watch app. Set a value to true/YES when your criteria has been met and check that value in the Watch app.

protecting client from javascript console

I just finished a app with Meteor that was kind of to test the waters and really try to figure Meteor out. My application is a two player game with 64 buttons. Two users enter a single game, whoever presses the most buttons, wins. Everything works well for the most part except for one part, a user in the game can easily cheat by typing some jQuery into the console the most obvious is $('.button').click();. After a while of searching through Meteor Docs and trial and error I am stumped. The buttons are part of a collection specific to the two players. As soon as one player logs in the server side code inserts buttons into a collection called "Games". How can I protect users from modifying code via JavaScript console? I obviously don't want to post 100s of lines of code and I hope I gave you the gist of how my application operates if you want to see specific code please check out my Git Repo. Also heres a link to the actual game : Bubble Popper
You can't control what your clients do on their computers. You best hope is to add some restrictions on the server side. Perhaps it's not possible for any human to click on two buttons within 1 second? If it's not, then add this restriction on the server.
From How does Facebook disable the browser's integrated Developer Tools?
This should only work for chrome.
Object.defineProperty(console, '_commandLineAPI',
{ get : function() { throw 'Nooo!' } })
That being said - this isn't security - just a cosmetic thing / security from ignorance.
Security should happen via your server side Meteor.methods, and from your allow/deny rules in the db.

Resources