//////////////////////////////////////////////////////////////////////////// // // Copyright 2015 Realm Inc. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // //////////////////////////////////////////////////////////////////////////// // Asynchronously submits build information to Realm if running in an iOS // simulator or on OS X if a debugger is attached. Does nothing if running on an // iOS / watchOS device or if a debugger is *not* attached. // // To be clear: this does *not* run when your app is in production or on // your end-user’s devices; it will only run in the simulator or when a debugger // is attached. // // Why are we doing this? In short, because it helps us build a better product // for you. None of the data personally identifies you, your employer or your // app, but it *will* help us understand what language you use, what iOS // versions you target, etc. Having this info will help prioritizing our time, // adding new features and deprecating old features. Collecting an anonymized // bundle & anonymized MAC is the only way for us to count actual usage of the // other metrics accurately. If we don’t have a way to deduplicate the info // reported, it will be useless, as a single developer building their Swift app // 10 times would report 10 times more than a single Objective-C developer that // only builds once, making the data all but useless. // No one likes sharing data unless it’s necessary, we get it, and we’ve // debated adding this for a long long time. Since Realm is a free product // without an email signup, we feel this is a necessary step so we can collect // relevant data to build a better product for you. If you truly, absolutely // feel compelled to not send this data back to Realm, then you can set an env // variable named REALM_DISABLE_ANALYTICS. Since Realm is free we believe // letting these analytics run is a small price to pay for the product & support // we give you. // // Currently the following information is reported: // - What version of Realm and core is being used, and from which language (obj-c or Swift). // - Which platform and version of OS X it's running on (in case Xcode aggressively drops // support for older versions again, we need to know what we need to support). // - The minimum iOS/OS X version that the application is targeting (again, to // help us decide what versions we need to support). // - An anonymous MAC address and bundle ID to aggregate the other information on. // - The host platform OSX and version. // - The XCode version. // - Some info about the features been used when opening the realm for the first time. #import <Realm/RLMRealm.h> #import <Foundation/Foundation.h> void RLMSendAnalytics(RLMRealmConfiguration *configuration, RLMSchema *schema); NSString *RLMHashBase16Data(const void *bytes, size_t length);