mirror of
https://github.com/scratchfoundation/scratchjr.git
synced 2024-11-25 00:28:20 -05:00
add generic setAnalyticsPref functions for iOS and Android
This commit is contained in:
parent
d6e1a77327
commit
c301a1090e
7 changed files with 49 additions and 0 deletions
|
@ -629,4 +629,11 @@ public class JavaScriptDirectInterface {
|
|||
_activity.setAnalyticsPlacePref(place);
|
||||
}
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
public void setAnalyticsPref(String prefObjStr) {
|
||||
if (prefObjStr != null) {
|
||||
_activity.setAnalyticsPref(prefObjStr);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -41,6 +41,9 @@ import java.io.FileNotFoundException;
|
|||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
import org.json.JSONObject;
|
||||
import org.json.JSONArray;
|
||||
import org.json.JSONException;
|
||||
/**
|
||||
* Main activity for Scratch Jr., consisting of a full-screen landscape WebView.
|
||||
*
|
||||
|
@ -520,6 +523,22 @@ public class ScratchJrActivity
|
|||
_FirebaseAnalytics.setUserProperty("place_preference", place);
|
||||
}
|
||||
|
||||
/**
|
||||
* Record a user property
|
||||
* @param prefObjStr like "{\"school\": \"Central High\"}"
|
||||
*/
|
||||
public void setAnalyticsPref(String prefObjStr) {
|
||||
try {
|
||||
JSONObject jsonObject = new JSONObject(prefObjStr);
|
||||
JSONArray jsonArray = jsonObject.names();
|
||||
String key = jsonArray.getString(0);
|
||||
String value = jsonObject.getString(key);
|
||||
_FirebaseAnalytics.setUserProperty(key, value);
|
||||
} catch (JSONException e) {
|
||||
// don't log anything to Firebase
|
||||
}
|
||||
}
|
||||
|
||||
public void translateAndScaleRectToContainerCoords(RectF rect, float devicePixelRatio) {
|
||||
float wx = _webView.getX();
|
||||
float wy = _webView.getY();
|
||||
|
|
|
@ -128,6 +128,7 @@
|
|||
- (NSString *) deviceName;
|
||||
- (NSString *) analyticsEvent:(NSString *)category :(NSString *)action :(NSString *)label;
|
||||
- (void) setAnalyticsPlacePref:(NSString *)place;
|
||||
- (void) setAnalyticsPref:(NSString *)prefObjStr;
|
||||
@end
|
||||
|
||||
@interface ViewController : UIViewController <JSExports,UIWebViewDelegate,MFMailComposeViewControllerDelegate>
|
||||
|
|
|
@ -333,6 +333,16 @@ JSContext *js;
|
|||
[FIRAnalytics setUserPropertyString:place forName:@"place_preference"];
|
||||
}
|
||||
|
||||
// @param prefObjStr like "{\"place_preference\": \"School\"}"
|
||||
-(void) setAnalyticsPref:(NSString*)prefObjStr {
|
||||
NSData* data = [prefObjStr dataUsingEncoding:NSUTF8StringEncoding];
|
||||
NSDictionary* dict = [NSJSONSerialization JSONObjectWithData:data options:0 error: nil];
|
||||
NSString *key = [[dict allKeys] firstObject];
|
||||
NSString *value = [dict objectForKey: key];
|
||||
[FIRAnalytics setUserPropertyString:value forName:key];
|
||||
}
|
||||
|
||||
|
||||
// iPad name (used for information in the name/sharing dialog to help people using Airdrop)
|
||||
- (NSString*) deviceName {
|
||||
return [[UIDevice currentDevice] name];
|
||||
|
|
|
@ -261,6 +261,10 @@ export default class Android {
|
|||
AndroidInterface.setAnalyticsPlacePref(preferredPlace);
|
||||
}
|
||||
|
||||
static setAnalyticsPref (jsonStr) {
|
||||
AndroidInterface.setAnalyticsPref(jsonStr);
|
||||
}
|
||||
|
||||
// // Web Wiew delegate call backs
|
||||
//
|
||||
// static pageError (desc) {
|
||||
|
|
|
@ -253,6 +253,10 @@ export default class OS {
|
|||
tabletInterface.setAnalyticsPlacePref(preferredPlace);
|
||||
}
|
||||
|
||||
static setAnalyticsPref (key, value) {
|
||||
tabletInterface.setAnalyticsPref(JSON.stringify({[key]: value}));
|
||||
}
|
||||
|
||||
// Web Wiew delegate call backs
|
||||
|
||||
static pageError (desc) {
|
||||
|
|
|
@ -268,6 +268,10 @@ export default class iOS {
|
|||
window.tablet.setAnalyticsPlacePref(preferredPlace);
|
||||
}
|
||||
|
||||
static setAnalyticsPref (jsonStr) {
|
||||
window.tablet.setAnalyticsPref(jsonStr);
|
||||
}
|
||||
|
||||
// // Web Wiew delegate call backs
|
||||
//
|
||||
// static pageError (desc) {
|
||||
|
|
Loading…
Reference in a new issue