From b957e706cea2f62c33e0895624c83031ee7c409d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=5E=5F=5E=EF=BC=89o=E8=87=AA=E8=87=AAo=EF=BC=88=5E=5F=5E?= Date: Wed, 6 Jun 2018 18:32:09 +0300 Subject: [PATCH] extract uuid from ios path --- README.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/README.md b/README.md index f59b542..f02fc75 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,33 @@ Java.perform(function() { }; }); ``` + +* (iOS) Extract UUID for specific path when attached to an app +``` +var PLACEHOLDER = '{UUID}'; +function extractUUIDfromPath(path) { + var bundleIdentifier = String(ObjC.classes.NSBundle.mainBundle().objectForInfoDictionaryKey_('CFBundleIdentifier')); + var path_prefix = path.substr(0, path.indexOf(PLACEHOLDER)); + var plist_metadata = '/.com.apple.mobile_container_manager.metadata.plist'; + var folders = ObjC.classes.NSFileManager.defaultManager().contentsOfDirectoryAtPath_error_(path_prefix, NULL); + for (var i = 0, l = folders.count(); i < l; i++) { + var uuid = folders.objectAtIndex_(i); + var metadata = path_prefix + uuid + plist_metadata; + var dict = ObjC.classes.NSMutableDictionary.alloc().initWithContentsOfFile_(metadata); + var enumerator = dict.keyEnumerator(); + var key; + while ((key = enumerator.nextObject()) !== null) { + if (key == 'MCMMetadataIdentifier') { + var appId = String(dict.objectForKey_(key)); + if (appId.indexOf(bundleIdentifier) != -1) { + return path.replace(PLACEHOLDER, uuid); + } + } + } + } +} +console.log( extractUUIDfromPath('/var/mobile/Containers/Data/Application/' + PLACEHOLDER + '/Documents') ); +``` TODOs: - Add GIFs & docs