get URL scheme from this file
創建於:2026年1月28日
使用 GPT-5.2 Thinking 回答 Chat01
創建於:2026年1月28日
使用 GPT-5.2 Thinking 回答 Chat01
get URL scheme from this file
I don’t have the file yet (there are no uploads available in this chat), so I can’t extract the URL scheme.
Please upload the file here (or paste the relevant contents—e.g., the Info.plist / Android manifest / config section), and I’ll return the URL scheme(s) immediately.
pythonimport plistlib, pathlib, json, re, os, textwrap path="/mnt/data/Info.plist" with open(path,'rb') as f: data=plistlib.load(f) type(data), list(data.keys())[:20] (dict, ['CFBundlePackageType', 'UILaunchStoryboardName', 'NSLocationAlwaysUsageDescription', 'DTPlatformVersion', 'UISupportsDocumentBrowser', 'DTSDKBuild', 'NFCReaderUsageDescription', 'CFBundleIcons~ipad', 'LSRequiresIPhoneOS', 'NSCameraUsageDescription', 'FirebaseAppDelegateProxyEnabled', 'CFBundleDisplayName', 'com.apple.developer.nfc.readersession.iso7816.select-identifiers', 'DTXcodeBuild', 'CFBundleLocalizations', 'CADisableMinimumFrameDurationOnPhone', 'CFBundleIdentifier', 'UIDeviceFamily', 'LSApplicationQueriesSchemes', 'CFBundleSignature'])
python'CFBundleURLTypes' in data, data.get('CFBundleURLTypes')[:1] if data.get('CFBundleURLTypes') else None (True, [{'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.fts']}])
pythonurl_types=data.get('CFBundleURLTypes',[]) schemes=[] for t in url_types: for s in t.get('CFBundleURLSchemes',[]): schemes.append(s) schemes, url_types (['com.fts', 'com.googleusercontent.apps.403375715630-9guek8pbahnf5qcdu8k94n1eucg72jtd', 'com.googleusercontent.apps.527721678855-024qu3umka7glpdggiakrlmtffhgn0jo', 'com.googleusercontent.apps.197630849164-kh4njhb2hsuue41e3vovvd96tfegj2sb', 'com.googleusercontent.apps.631902360664-8siftcflr4314ilq2d0qbhj7kht12so1', 'com.googleusercontent.apps.210730715059-g95mcb2o2ji7mjfejr5vi0udn4d8q7gg', 'com.googleusercontent.apps.751583243006-t4q5qdi707h2pl8hvkusu3q4nl7s9st6', 'com.googleusercontent.apps.697825903879-cjvpav8lsj45uql5fa2j8idc7kocnmrg', 'com.googleusercontent.apps.410034623087-hqrc54j54m60pcdp3tltlogoq06ofaio', 'com.googleusercontent.apps.581249355204-2kgblj9du5ionajp5cdpemfg87fsjbhs', 'com.googleusercontent.apps.609589628434-7ak168b86odu8q1vjnh2rorjf35bcr9v', 'com.fts.metro'], [{'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.fts']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.403375715630-9guek8pbahnf5qcdu8k94n1eucg72jtd']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.527721678855-024qu3umka7glpdggiakrlmtffhgn0jo']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.197630849164-kh4njhb2hsuue41e3vovvd96tfegj2sb']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.631902360664-8siftcflr4314ilq2d0qbhj7kht12so1']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLName': 'https'}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.210730715059-g95mcb2o2ji7mjfejr5vi0udn4d8q7gg']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.751583243006-t4q5qdi707h2pl8hvkusu3q4nl7s9st6']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.697825903879-cjvpav8lsj45uql5fa2j8idc7kocnmrg']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.410034623087-hqrc54j54m60pcdp3tltlogoq06ofaio']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.581249355204-2kgblj9du5ionajp5cdpemfg87fsjbhs']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.609589628434-7ak168b86odu8q1vjnh2rorjf35bcr9v']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLName': 'Bundle ID', 'CFBundleURLSchemes': ['com.fts.metro']}])
pythonaqs=data.get('LSApplicationQueriesSchemes',[]) aqs[:50], len(aqs) (['https', 'http', 'tel', 'SacombankPay'], 4)
From /mnt/data/Info.plist, the app registers these URL schemes under CFBundleURLTypes → CFBundleURLSchemes:
com.ftscom.fts.metrocom.googleusercontent.apps.403375715630-9guek8pbahnf5qcdu8k94n1eucg72jtdcom.googleusercontent.apps.527721678855-024qu3umka7glpdggiakrlmtffhgn0jocom.googleusercontent.apps.197630849164-kh4njhb2hsuue41e3vovvd96tfegj2sbcom.googleusercontent.apps.631902360664-8siftcflr4314ilq2d0qbhj7kht12so1com.googleusercontent.apps.210730715059-g95mcb2o2ji7mjfejr5vi0udn4d8q7ggcom.googleusercontent.apps.751583243006-t4q5qdi707h2pl8hvkusu3q4nl7s9st6com.googleusercontent.apps.697825903879-cjvpav8lsj45uql5fa2j8idc7kocnmrgcom.googleusercontent.apps.410034623087-hqrc54j54m60pcdp3tltlogoq06ofaiocom.googleusercontent.apps.581249355204-2kgblj9du5ionajp5cdpemfg87fsjbhscom.googleusercontent.apps.609589628434-7ak168b86odu8q1vjnh2rorjf35bcr9vAlso present (not “handled URL schemes”, but queryable schemes) under LSApplicationQueriesSchemes:
https, http, tel, SacombankPaycan i create shortcut from input above by url
pythonimport plistlib, pathlib, json, textwrap p=pathlib.Path('/mnt/data/Info.plist') data=plistlib.loads(p.read_bytes()) data.keys(), type(data.get('CFBundleURLTypes')) (dict_keys(['CFBundlePackageType', 'UILaunchStoryboardName', 'NSLocationAlwaysUsageDescription', 'DTPlatformVersion', 'UISupportsDocumentBrowser', 'DTSDKBuild', 'NFCReaderUsageDescription', 'CFBundleIcons~ipad', 'LSRequiresIPhoneOS', 'NSCameraUsageDescription', 'FirebaseAppDelegateProxyEnabled', 'CFBundleDisplayName', 'com.apple.developer.nfc.readersession.iso7816.select-identifiers', 'DTXcodeBuild', 'CFBundleLocalizations', 'CADisableMinimumFrameDurationOnPhone', 'CFBundleIdentifier', 'UIDeviceFamily', 'LSApplicationQueriesSchemes', 'CFBundleSignature', 'CFBundleInfoDictionaryVersion', 'CFBundleIcons', 'CFBundleSupportedPlatforms', 'LSMinimumSystemVersion', 'UIMainStoryboardFile', 'ITSAppUsesNonExemptEncryption', 'MinimumOSVersion', 'CFBundleName', 'CFBundleShortVersionString', 'UIStatusBarHidden', 'UIBackgroundModes', 'UIRequiredDeviceCapabilities', 'CFBundleExecutable', 'UIViewControllerBasedStatusBarAppearance', 'UISupportedInterfaceOrientations~ipad', 'DTAppStoreToolsBuild', 'BuildMachineOSBuild', 'UIApplicationSupportsIndirectInputEvents', 'DTPlatformName', 'NSMicrophoneUsageDescription', 'NSLocationWhenInUseUsageDescription', 'DTCompiler', 'CFBundleVersion', 'CFBundleDevelopmentRegion', 'FlutterDeepLinkingEnabled', 'CFBundleURLTypes', 'NSFaceIDUsageDescription', 'NSLocationAlwaysAndWhenInUseUsageDescription', 'BGTaskSchedulerPermittedIdentifiers', 'DTSDKName', 'DTPlatformBuild', 'NSPhotoLibraryUsageDescription', 'UISupportedInterfaceOrientations', 'DTXcode']), list)
pythonurl_types=data.get('CFBundleURLTypes',[]) url_types [{'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.fts']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.403375715630-9guek8pbahnf5qcdu8k94n1eucg72jtd']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.527721678855-024qu3umka7glpdggiakrlmtffhgn0jo']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.197630849164-kh4njhb2hsuue41e3vovvd96tfegj2sb']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.631902360664-8siftcflr4314ilq2d0qbhj7kht12so1']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLName': 'https'}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.210730715059-g95mcb2o2ji7mjfejr5vi0udn4d8q7gg']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.751583243006-t4q5qdi707h2pl8hvkusu3q4nl7s9st6']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.697825903879-cjvpav8lsj45uql5fa2j8idc7kocnmrg']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.410034623087-hqrc54j54m60pcdp3tltlogoq06ofaio']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.581249355204-2kgblj9du5ionajp5cdpemfg87fsjbhs']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.609589628434-7ak168b86odu8q1vjnh2rorjf35bcr9v']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLName': 'Bundle ID', 'CFBundleURLSchemes': ['com.fts.metro']}]
pythondata.get('LSApplicationQueriesSchemes') ['https', 'http', 'tel', 'SacombankPay']
Yes — on iOS you can make a Shortcut that opens the app via one of those custom URL schemes.
com.fts://com.fts.metro://com.googleusercontent.apps.... schemes are typically Google sign-in redirect schemes (OAuth). They usually aren’t meant as user deep links.com.fts://homecom.fts.metro://home
(Whether those routes work depends on what the app actually supports.)Use the Shortcuts action Open App → pick the app. That doesn’t depend on deep-link routes.
If you tell me what screen you want the shortcut to open (e.g., “tickets”, “profile”, “scan”), I can suggest what the deep link usually looks like — but the exact path has to match what the app implements.
i want to open tickets
pythonimport plistlib, pathlib, re, json, textwrap, os, sys, pandas as pd p = pathlib.Path("/mnt/data/Info.plist") data = plistlib.loads(p.read_bytes()) list(data.keys())[:50], len(data.keys()) (['CFBundlePackageType', 'UILaunchStoryboardName', 'NSLocationAlwaysUsageDescription', 'DTPlatformVersion', 'UISupportsDocumentBrowser', 'DTSDKBuild', 'NFCReaderUsageDescription', 'CFBundleIcons~ipad', 'LSRequiresIPhoneOS', 'NSCameraUsageDescription', 'FirebaseAppDelegateProxyEnabled', 'CFBundleDisplayName', 'com.apple.developer.nfc.readersession.iso7816.select-identifiers', 'DTXcodeBuild', 'CFBundleLocalizations', 'CADisableMinimumFrameDurationOnPhone', 'CFBundleIdentifier', 'UIDeviceFamily', 'LSApplicationQueriesSchemes', 'CFBundleSignature', 'CFBundleInfoDictionaryVersion', 'CFBundleIcons', 'CFBundleSupportedPlatforms', 'LSMinimumSystemVersion', 'UIMainStoryboardFile', 'ITSAppUsesNonExemptEncryption', 'MinimumOSVersion', 'CFBundleName', 'CFBundleShortVersionString', 'UIStatusBarHidden', 'UIBackgroundModes', 'UIRequiredDeviceCapabilities', 'CFBundleExecutable', 'UIViewControllerBasedStatusBarAppearance', 'UISupportedInterfaceOrientations~ipad', 'DTAppStoreToolsBuild', 'BuildMachineOSBuild', 'UIApplicationSupportsIndirectInputEvents', 'DTPlatformName', 'NSMicrophoneUsageDescription', 'NSLocationWhenInUseUsageDescription', 'DTCompiler', 'CFBundleVersion', 'CFBundleDevelopmentRegion', 'FlutterDeepLinkingEnabled', 'CFBundleURLTypes', 'NSFaceIDUsageDescription', 'NSLocationAlwaysAndWhenInUseUsageDescription', 'BGTaskSchedulerPermittedIdentifiers', 'DTSDKName'], 54)
pythondata['CFBundleURLTypes'] [{'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.fts']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.403375715630-9guek8pbahnf5qcdu8k94n1eucg72jtd']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.527721678855-024qu3umka7glpdggiakrlmtffhgn0jo']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.197630849164-kh4njhb2hsuue41e3vovvd96tfegj2sb']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.631902360664-8siftcflr4314ilq2d0qbhj7kht12so1']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLName': 'https'}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.210730715059-g95mcb2o2ji7mjfejr5vi0udn4d8q7gg']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.751583243006-t4q5qdi707h2pl8hvkusu3q4nl7s9st6']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.697825903879-cjvpav8lsj45uql5fa2j8idc7kocnmrg']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.410034623087-hqrc54j54m60pcdp3tltlogoq06ofaio']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.581249355204-2kgblj9du5ionajp5cdpemfg87fsjbhs']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLSchemes': ['com.googleusercontent.apps.609589628434-7ak168b86odu8q1vjnh2rorjf35bcr9v']}, {'CFBundleTypeRole': 'Editor', 'CFBundleURLName': 'Bundle ID', 'CFBundleURLSchemes': ['com.fts.metro']}]
pythondef find_strings(obj, needle): hits=[] def rec(o, path=""): if isinstance(o, dict): for k,v in o.items(): rec(v, f"{path}/{k}") elif isinstance(o, list): for i,v in enumerate(o): rec(v, f"{path}[{i}]") elif isinstance(o, (str, bytes)): s=o.decode() if isinstance(o, bytes) else o if needle.lower() in s.lower(): hits.append((path,s)) rec(obj,"") return hits find_strings(data, "ticket")[:20], len(find_strings(data,"ticket")) ([], 0)
python[k for k in data.keys() if "Shortcut" in k or "shortcut" in k] []
python[k for k in data.keys() if "Activity" in k or "activity" in k] []
pythondata.get("CFBundleIdentifier"), data.get("CFBundleDisplayName"), data.get("CFBundleName") ('com.fts.metro', 'HCMC Metro HURC', 'HCMC Metro HURC')
Yes — you can create an iOS Shortcut that opens the app via a URL scheme.
From your Info.plist, the two app schemes you should use are:
com.fts.metro:// (most likely primary — it matches the Bundle ID)com.fts://Create a new Shortcut → add Open URL (or Open URLs) and try these URLs (in this order):
com.fts.metro://ticketscom.fts.metro:///tickets (triple slash is sometimes required when there’s no “host”)com.fts.metro://myticketscom.fts://ticketscom.fts://myticketsThen save the Shortcut → Share → Add to Home Screen (optional).
That usually means the app doesn’t expose a deep link route for Tickets (the plist only tells us the scheme exists, not what paths/screens are supported).
Your reliable fallback:
If you want, tell me what the Tickets screen is called exactly in the UI (e.g., “My Tickets”, “QR Tickets”, “Ticket Wallet”), and whether there’s a Share button on that screen—shared links often reveal the exact deep link/universal link format to use.