in facebook-applinks/src/main/java/com/facebook/applinks/AppLinkData.java [316:371]
private static AppLinkData createFromJson(String jsonString) {
if (jsonString == null) {
return null;
}
try {
// Any missing or malformed data will result in a JSONException
JSONObject appLinkArgsJson = new JSONObject(jsonString);
String version = appLinkArgsJson.getString(APPLINK_VERSION_KEY);
JSONObject bridgeArgs = appLinkArgsJson.getJSONObject(APPLINK_BRIDGE_ARGS_KEY);
String method = bridgeArgs.getString(BRIDGE_ARGS_METHOD_KEY);
if (method.equals("applink") && version.equals("2")) {
// We have a new deep link
AppLinkData appLinkData = new AppLinkData();
appLinkData.arguments = appLinkArgsJson.getJSONObject(APPLINK_METHOD_ARGS_KEY);
// first look for the "ref" key in the top level args
if (appLinkData.arguments.has(METHOD_ARGS_REF_KEY)) {
appLinkData.ref = appLinkData.arguments.getString(METHOD_ARGS_REF_KEY);
} else if (appLinkData.arguments.has(ARGUMENTS_REFERER_DATA_KEY)) {
// if it's not in the top level args, it could be in the "referer_data" blob
JSONObject refererData = appLinkData.arguments.getJSONObject(ARGUMENTS_REFERER_DATA_KEY);
if (refererData.has(REFERER_DATA_REF_KEY)) {
appLinkData.ref = refererData.getString(REFERER_DATA_REF_KEY);
}
}
if (appLinkData.arguments.has(METHOD_ARGS_TARGET_URL_KEY)) {
appLinkData.targetUri =
Uri.parse(appLinkData.arguments.getString(METHOD_ARGS_TARGET_URL_KEY));
appLinkData.appLinkData = getAppLinkData(appLinkData.targetUri);
}
if (appLinkData.arguments.has(ARGUMENTS_EXTRAS_KEY)) {
JSONObject extrasData = appLinkData.arguments.getJSONObject(ARGUMENTS_EXTRAS_KEY);
if (extrasData.has(EXTRAS_DEEPLINK_CONTEXT_KEY)) {
JSONObject deeplink_context = extrasData.getJSONObject(EXTRAS_DEEPLINK_CONTEXT_KEY);
if (deeplink_context.has(PROMOTION_CODE_KEY)) {
appLinkData.promotionCode = deeplink_context.getString(PROMOTION_CODE_KEY);
}
}
}
appLinkData.argumentBundle = toBundle(appLinkData.arguments);
return appLinkData;
}
} catch (JSONException e) {
Utility.logd(TAG, "Unable to parse AppLink JSON", e);
} catch (FacebookException e) {
Utility.logd(TAG, "Unable to parse AppLink JSON", e);
}
return null;
}