AoG Report State Dashboard state changed, but state in Google home APP didn't change - google-home

I follow the google doc step by step. And now in Report State Dashboard the state of my device will change immediately when I turn on/off my device. But the state of device dose not change in Google Home APP.
as you can see in dashboard it display on:false, but in Google Home APP it still on.

In order for device states to update correctly in Google Home App, your action needs to implement Report State and Query Intent correctly. Currently Google Home App depends on a combination of your report state information, and your query responses.
Also note that the Report State Dashboard Tool is now deprecated, and might show false positive results! Please use the new Home Graph Viewer going forward.

Related

App Store Rejection - Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing

I use Firebase for user authentication, I just resubmitted my app and got the following rejection:
Guideline 5.1.2 - Legal - Privacy - Data Use and Sharing
We noticed you do not use App Tracking Transparency to request the
user's permission before tracking their activity across apps and
websites. The app privacy information you provided in App Store
Connect indicates you collect data in order to track the user,
including Other Diagnostic Data, Audio Data, Performance Data, Crash
Data, Product Interaction, Phone Number, User ID, Emails or Text
Messages, Photos or Videos, and Search History.
Starting with iOS 14.5, apps on the App Store need to receive the
user’s permission through the AppTrackingTransparency framework before
collecting data used to track them. This requirement protects the
privacy of App Store users.
Next Steps
Here are two ways to resolve this issue:
You can remove the tracking functionality from your app and update your app privacy information in App Store Connect.
If you decide to continue tracking users, you must implement App Tracking Transparency and request permission before collecting data
used to track the user or device.
My app has no ads but I have to track users throughout the app using their userID so that I know what post belongs to which user etc etc.
If the user declines the prompt AppTrackingTransparency isn't that basically saying that I can no longer track them? I have no idea what to do here.
Here are the Privacy checkboxes that I filled out. Apparently i can change something but I don't know what to change.
I resubmitted my app and it got approved. Seems the key is to make sure it is only Used for App Functionality.
To make that happen I made these changes to the App Policy page in App Store Connect.
I clicked the blue Edit button next to each policy. Of the 10 policies, here are 4 red arrows next to 4 of the Edit buttons. Click each one for the same results for steps two, three, and four.
After clicking the Edit button, you will be presented with a screen with a bunch of selections, for that screen all I did was check App Functionality:
For the 2nd screen, I selected No, user IDs collected from this app are not linked to the user's identity.
For the 3rd screen I selected No, we do not use phone numbers for tracking purposes. Notice on the 3rd screen, under Definitions and Examples, it says:
Tracking does not apply in the following situations:
• When the data broker uses the data shared with them solely for fraud
detection or prevention or security purposes
Here is a screen shot with it in purple underline:
Here are how all of my Privacy Policies look now:
Here is the email approval:

How can I build a webapp which uses google calendar api without having to become verified?

What I want to build:
I want to build a website where users can connect their google calendars (this will use Google Calendar API's)
and view their calendar events, as well as edit them, and create new ones.
My problem:
In order to do so, google says my app needs to be verified, which can take weeks, and I also need to set up terms of services pages, privacy policy pages
I also need to supply authorised javascript origins which MUST start with https, which of course is a problem during development, since my origin is http://localhost
I also need to set up support emails and homepage link
Question
I just want to start building my application without having to set up a whole production-ready website eco system.
Is there anyway I can use these Google Calendar APIs for editing/creating calendar events locally, without having to set up everything mentioned above first?
Unverified apps can still be used by the developer who created the project on google developer console.
Unverified app screen
The app or script might display an "unverified app" screen before it displays the consent screen. This is based on the specific scopes that your app includes in the request.
You can still work on your app while you are going though the verification process. However that being said i would start that process asap it can take a long time to get verified.
Yes, you can. As far as I am able to tell, all the verification step does is remove the "unverified app" screen. As long as you click Advanced > Go To ... (unsafe), you should be able to create and edit calendar events for that user in your application.
In order to be able to create and edit calendar events, you need to use the most sensitive scope, which is https://www.googleapis.com/auth/calendar. I couldn't figure out how to edit and create calendar events in my web app until I changed my scope from calendar.events to calendar.
Creating Events: https://developers.google.com/calendar/create-events

(Eddystone) Is it possible to get the number of times an URL is received by a device without writing your own app?

Is it possible to get the amount of times an URL is received by a device from the proximity beacon API? I want to know what the click through ratio is of the broadcasted URL.
That depends. If you write your own app that scans for Eddystone-URL beacons and triggers some content (e.g., the web page itself) off of that, then naturally you're in full control and can implement this kind of analytics. Though it'll only apply to people which installed the app.
If you rely on Chrome for iOS, or the Physical Web iOS and Android apps to discover the Eddystone-URL beacons, then these apps do not provide any such numbers.
However, both Chrome for iOS and the Physical Web apps do fetch some metadata about the URL they detect, such as the page title and page description, without the user first clicking on the link. So there's a slim possibility that you could filter such requests out (they will be made by the Physical Web Service, or some similar "bot"), separate them from the actual visits, and do analytics based on that. Most likely however, this "bot," or the proxying service (which is there precisely to prevent this kind of tracking, and protect the user's privacy), will also do some caching, so you'll see fewer requests than the actual number of times the URL is received by the device.
And finally, dropping to a lower level, a note: most beacons are uni-directional, i.e., they broadcast information, but don't receive any information back, so beacons themselves usually can't count the number of packets on the receiving end. (I guess you could technically use the Bluetooth "scan response" mechanism to do that, but it would require custom beacon hardware/firmware.)
Unfortunately, no, it will not do this by itself.
Google's Proximity Beacon Api is a server-side system that stores metadata about beacons (location, battery level, etc) It requires you to add special client code integrated with your app to submit detection data.
Similarly, detecting Eddystone-URL beacons generally requires you to add custom code to your app to do the detections and and present the URL to the user. (The only exception to this is for some Chrome for iOS users with the Chrome Today widget enabled, and no public system provides click through rates.)
Since your app must present the URL itself you really have to roll your own solution to this problem.
If I understand right, you should be able to achieve this by Google analytics campaign. Setup a campaign, add campaign url to ibeacon url and you should be able to check the details analytics through Google analytics.

How Show Alert for Enabling GPS in Mozilla OS App

If Mobile's GPS is off, Then there will be prompt or toast or alert whatever will be shown
Please Enable your geolocation First.
I use something like this
if ("geolocation" in navigator) {
/* geolocation is available */
} else {
/* geolocation IS NOT available */
}
But this check only browser support GPS or not?
how can i do that ? Any Suggestions ?
Clarifying the Question:
Here's the user flow which I understand from your question:
The user wants to use some part of your Mozilla OS app which requires GPS.
The app should check if the GPS is on.
If the GPS is off, prompt the user to turn their GPS on.
Code
(Based off of code from the Geolocation docs)
// geolocation is available
if ("geolocation" in navigator) {
// get position
navigator.geolocation.getCurrentPosition(function(position) {
do_something(position.coords.latitude, position.coords.longitude);
});
// geolocation IS NOT available
} else {
// notify the user to turn their GPS on
new Notification("Please enable your GPS");
/*Disable whatever feature you were planning on using until user comes back
with the GPS turned on and this logic runs again.*/
}
Explanation
In Mozilla OS, developers do not have direct access to the GPS. Here's the research that led me to this conclusion:
After no mention on the Geolocation page, I looked on the "App permissions page" near the bottom in the section titled "Internal (Certified) app permissions". There is access to bluetooth, camera, and WiFi, but not GPS. Then I started looking at the Internal (Certified) settings page, where I found some additional hardware, but nothing regarding the GPS.
You already found the workaround on the Geolocation documentation page: you check to see if the Geolocation service will return a location. If it's undefined, then the GPS isn't turned on. Hacky, but that's what we've got.
If the GPS is off, you want to alert the user, asking to turn it on. According to the "App permissions page", in app development, you can notify the user in this way without asking for permission ("Allow for all installed App types")
In the browser, you would have to ask to show notifications first using Notification.requestPermission().
The solution code given above is for Firefox OS 1.2+ (or Gecko 22+); if your app is using a earlier version, use mozNotification.
Summary (Anik's Specific Questions)
But this check only browser support GPS or not?
The same Geolocation service is used for browser and Mozilla OS apps. This is evidenced by the App Permission geolocation link to the Web API Interfaces Geolocation API page which says, "This allows a Web site or app to offer customized results based on the user's location." Regardless of the device type, "For privacy reasons, the user is asked for permission to report location information."
how can i do that ? Any Suggestions ?
See the code above and follow the many links to find sources for how to use the Geolocation service and create user notifications.

Create Docs through the Drive API with specific page setups (margins, orientation)

My app is already able to create Google Docs through the Drive API, and when doing so I can choose the title, data, and metadata. But I've been looking at the documentation and it seems there is no way to set some other properties of the Docs, such as the margins and the orientation (portrait or landscape) of the Docs being created. Is there a way to do so?
After not finding an answer in the documentation, the only thing I could think of was logging in with my Google Account, going to one of the created Docs, click on "Page setup", then select "Landscape", and finally "Set as default". I thought that by setting it as the default in my Google Account, it may happen that all the Docs created with it may be created as Landscapes. But it didn't work. A possible reason, however, is that the account actually creating the documents is a Service Account, not my regular Google Account. I guess both accounts, while being linked, are not the same thing, so the defaults of one don't apply to the other. Is there some way to set "Portrait" as the default orientation for the Docs created with my Service Account? If not, would the solution be to stop creating the Docs with my Service Account, and start creating them with my regular Google Account, so that the defaults I apply to them apply too to the newly created Docs?
Drive API doesn't support Docs related features for you to retrieve/set metadata about the documents.
Service accounts are individual Google accounts and no way related with your own user account. On the other hand, your default settings will only apply to you. You cant programatically set other user's defaults.
The best way I can think of, which is really a hack, is to make your own google docs API using headless chrome and pupeteer, which could be used only in part, and in connection with, the official docs API.
This is basically a web browser that runs on your server, which can be controlled to do anything a client would normally do on a web browser, like click buttons, submit forms, etc, only at the command of a server, which can be commanded through HTTP requests etc.
So after installing puppeteer, open the chromium browser, log into your google account, then open google drive with the server, and you should already be logged into the account. If not, you may have to log into the account using the server logic, which can get complicated with 2 step verification...
but anyway once you are logged into your google account on puppeteer, on drive.google.com, simply stay on that page and wait.
If the server receives some kind of HTTP request to make a new document, then have the server just literally click the new document button on the webpage, and it should open the new document in a new tab, which you should be able to access with puppeteer.
Then, when it is made, you can either just send the URL back to the request server, and / or make your page setup changes now, based on the data received in the HTTP request earlier.
For example, if, at one point (either after the document is created, or during its creation), there is some kind of message specifying the color of the background, just manually, on the server side, click File -> page setup, and select Custom, and, programmatically "type" the hex color code etc then click the OK button, then end the POST request.
If you have any questions, let me know
var doc = DocumentApp.getActiveDocument();
var body = doc.getBody();
//turn landscape if portrait
var oldHeight = body.getPageHeight();
if (oldHeight > body.getPageWidth()){
body.setPageHeight(body.getPageWidth());
body.setPageWidth(oldHeight);
}

Resources