| Index: packages/usage/readme.md
|
| diff --git a/packages/usage/readme.md b/packages/usage/readme.md
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..63a365a6f7489cf603c9431a6bd914b93f2d96ea
|
| --- /dev/null
|
| +++ b/packages/usage/readme.md
|
| @@ -0,0 +1,103 @@
|
| +# usage
|
| +
|
| +`usage` is a wrapper around Google Analytics for both command-line apps and web
|
| +apps.
|
| +
|
| +[](https://travis-ci.org/dart-lang/usage)
|
| +[](https://coveralls.io/r/dart-lang/usage?branch=master)
|
| +
|
| +## For web apps
|
| +
|
| +To use this library as a web app, import the `usage_html.dart` library and
|
| +instantiate the `AnalyticsHtml` class.
|
| +
|
| +## For command-line apps
|
| +
|
| +To use this library as a command-line app, import the `usage_io.dart` library
|
| +and instantiate the `AnalyticsIO` class.
|
| +
|
| +Note, for CLI apps, the usage library will send analytics pings asynchronously.
|
| +This is useful it that it doesn't block the app generally. It does have one
|
| +side-effect, in that outstanding asynchronous requests will block termination
|
| +of the VM until that request finishes. So, for short-lived CLI tools, pinging
|
| +Google Analytics can cause the tool to pause for several seconds before it
|
| +terminates. This is often undesired - gathering analytics information shouldn't
|
| +negatively effect the tool's UX.
|
| +
|
| +One solution to this is to use the `waitForLastPing({Duration timeout})` method
|
| +on the analytics object. This will wait until all outstanding analytics requests
|
| +have completed, or until the specified duration has elapsed. So, CLI apps can do
|
| +something like:
|
| +
|
| +```dart
|
| +analytics.waitForLastPing(timeout: new Duration(milliseconds: 500)).then((_) {
|
| + exit(0);
|
| +});
|
| +```
|
| +
|
| +## Using the API
|
| +
|
| +Import the package (in this example we use the `dart:io` version):
|
| +
|
| +```dart
|
| +import 'package:usage/usage_io.dart';
|
| +```
|
| +
|
| +And call some analytics code:
|
| +
|
| +```dart
|
| +final String UA = ...;
|
| +
|
| +Analytics ga = new AnalyticsIO(UA, 'ga_test', '1.0');
|
| +ga.optIn = true;
|
| +
|
| +ga.sendScreenView('home');
|
| +ga.sendException('foo exception');
|
| +
|
| +ga.sendScreenView('files');
|
| +ga.sendTiming('writeTime', 100);
|
| +ga.sendTiming('readTime', 20);
|
| +```
|
| +
|
| +## When do we send analytics data?
|
| +
|
| +We use an opt-in method for sending analytics information. There are essentially
|
| +three states for when we send information:
|
| +
|
| +*Sending screen views* If the user has not opted in, the library will only send
|
| +information about screen views. This allows tools to do things like version
|
| +checks, but does not send any additional information.
|
| +
|
| +*Opt-in* If the user opts-in to analytics collection the library sends all
|
| +requested analytics info. This includes screen views, events, timing
|
| +information, and exceptions.
|
| +
|
| +*Opt-ing out* In order to not send analytics information, either do not call the
|
| +analytics methods, or create and use the `AnalyticsMock` class. This provides
|
| +an instance you can use in place of a real analytics object but each analytics
|
| +method is a no-op.
|
| +
|
| +## Other info
|
| +
|
| +For both classes, you need to provide a Google Analytics tracking ID, the
|
| +application name, and the application version.
|
| +
|
| +Your application should provide an opt-in option for the user. If they opt-in,
|
| +set the `optIn` field to `true`. This setting will persist across sessions
|
| +automatically.
|
| +
|
| +*Note:* This library is intended for use with the Google Analytics application /
|
| +mobile app style tracking IDs (as opposed to the web site style tracking IDs).
|
| +
|
| +For more information, please see the Google Analytics Measurement Protocol
|
| +[Policy](https://developers.google.com/analytics/devguides/collection/protocol/policy).
|
| +
|
| +## Issues and bugs
|
| +
|
| +Please file reports on the
|
| +[GitHub Issue Tracker](https://github.com/dart-lang/usage/issues).
|
| +
|
| +## License
|
| +
|
| +You can view our license
|
| +[here](https://github.com/dart-lang/usage/blob/master/LICENSE).
|
|
|