[GH-ISSUE #1676] [Game Support]: 三国志战略版-The login interface keeps loading and needs to be forced to exit #1062

Closed
opened 2026-03-03 19:03:27 +03:00 by kerem · 17 comments
Owner

Originally created by @kts-kris on GitHub (Sep 12, 2024).
Original GitHub issue: https://github.com/PlayCover/PlayCover/issues/1676

https://apps.apple.com/cn/app/%E4%B8%89%E5%9B%BD%E5%BF%97-%E6%88%98%E7%95%A5%E7%89%88-%E4%B8%89%E5%9B%BD%E7%AD%96%E7%95%A5%E6%88%98%E4%BA%89%E6%89%8B%E6%B8%B8/id1474572440

Current issues

  • Game fails to install
  • Game fails to open
  • Game crashes randomly during gameplay
  • Game does not work with keymapping
  • Game experiences graphical issues or broken UI
  • Game fails to connect to servers or complete download

More details

The login interface keeps loading and needs to be forced to quit. The entire game interface has no response.

Crash log

Version 15.1 (Build 24B5035e)
Installing PlayTools
Copying PlayTools to Frameworks
Executable=/Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>com.apple.security.app-sandbox</key><true/><key>com.apple.security.assets.movies.read-write</key><true/><key>com.apple.security.assets.music.read-write</key><true/><key>com.apple.security.assets.pictures.read-write</key><true/><key>com.apple.security.device.audio-input</key><true/><key>com.apple.security.device.bluetooth</key><true/><key>com.apple.security.device.camera</key><true/><key>com.apple.security.device.microphone</key><true/><key>com.apple.security.device.usb</key><true/><key>com.apple.security.files.downloads.read-write</key><true/><key>com.apple.security.files.user-selected.read-write</key><true/><key>com.apple.security.network.client</key><true/><key>com.apple.security.network.server</key><true/><key>com.apple.security.personal-information.addressbook</key><true/><key>com.apple.security.personal-information.calendars</key><true/><key>com.apple.security.personal-information.location</key><true/><key>com.apple.security.print</key><true/><key>com.apple.security.temporary-exception.sbpl</key><array><string>(allow user-preference-write (preference-domain &quot;.GlobalPreferences&quot;))</string><string>(allow user-preference-read (preference-domain &quot;.GlobalPreferences&quot;))</string><string>(allow file* file-read* file-write* file-write-data file-read-metadata file-ioctl (subpath &quot;/Users/liuweigang/Library/Containers/io.playcover.PlayCover&quot;))</string><string>(allow file* file-read* file-read-metadata file-ioctl (subpath &quot;/Users/liuweigang/Library/Frameworks/PlayTools.framework&quot;))</string><string>(allow file* file-read* (subpath &quot;/Users/liuweigang/Library/Group Containers/&quot;))</string><string>(allow network* ipc-posix*)</string></array></dict></plist>

System Integrity Protection status: enabled.

Executable=/Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore
Identifier=com.s3.sgzzlb.cn
Format=app bundle with Mach-O thin (arm64)
CodeDirectory v=20400 size=245513 flags=0x2(adhoc) hashes=7662+7 location=embedded
Signature=adhoc
Info.plist entries=48
TeamIdentifier=not set
Sealed Resources version=2 rules=10 files=1525
Internal requirements count=0 size=12

/Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/PlugIns/AKInterface.bundle: replacing existing signature

What version of PlayCover are you using?

3.1.0

What version of macOS are you using?

macOS beta (please state the specific version)

Issue Language

  • Yes my issue is written in English
Originally created by @kts-kris on GitHub (Sep 12, 2024). Original GitHub issue: https://github.com/PlayCover/PlayCover/issues/1676 ### App Store link https://apps.apple.com/cn/app/%E4%B8%89%E5%9B%BD%E5%BF%97-%E6%88%98%E7%95%A5%E7%89%88-%E4%B8%89%E5%9B%BD%E7%AD%96%E7%95%A5%E6%88%98%E4%BA%89%E6%89%8B%E6%B8%B8/id1474572440 ### Current issues - [ ] Game fails to install - [X] Game fails to open - [ ] Game crashes randomly during gameplay - [ ] Game does not work with keymapping - [ ] Game experiences graphical issues or broken UI - [ ] Game fails to connect to servers or complete download ### More details The login interface keeps loading and needs to be forced to quit. The entire game interface has no response. ### Crash log ```shell Version 15.1 (Build 24B5035e) Installing PlayTools Copying PlayTools to Frameworks Executable=/Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>com.apple.security.app-sandbox</key><true/><key>com.apple.security.assets.movies.read-write</key><true/><key>com.apple.security.assets.music.read-write</key><true/><key>com.apple.security.assets.pictures.read-write</key><true/><key>com.apple.security.device.audio-input</key><true/><key>com.apple.security.device.bluetooth</key><true/><key>com.apple.security.device.camera</key><true/><key>com.apple.security.device.microphone</key><true/><key>com.apple.security.device.usb</key><true/><key>com.apple.security.files.downloads.read-write</key><true/><key>com.apple.security.files.user-selected.read-write</key><true/><key>com.apple.security.network.client</key><true/><key>com.apple.security.network.server</key><true/><key>com.apple.security.personal-information.addressbook</key><true/><key>com.apple.security.personal-information.calendars</key><true/><key>com.apple.security.personal-information.location</key><true/><key>com.apple.security.print</key><true/><key>com.apple.security.temporary-exception.sbpl</key><array><string>(allow user-preference-write (preference-domain &quot;.GlobalPreferences&quot;))</string><string>(allow user-preference-read (preference-domain &quot;.GlobalPreferences&quot;))</string><string>(allow file* file-read* file-write* file-write-data file-read-metadata file-ioctl (subpath &quot;/Users/liuweigang/Library/Containers/io.playcover.PlayCover&quot;))</string><string>(allow file* file-read* file-read-metadata file-ioctl (subpath &quot;/Users/liuweigang/Library/Frameworks/PlayTools.framework&quot;))</string><string>(allow file* file-read* (subpath &quot;/Users/liuweigang/Library/Group Containers/&quot;))</string><string>(allow network* ipc-posix*)</string></array></dict></plist> System Integrity Protection status: enabled. Executable=/Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore Identifier=com.s3.sgzzlb.cn Format=app bundle with Mach-O thin (arm64) CodeDirectory v=20400 size=245513 flags=0x2(adhoc) hashes=7662+7 location=embedded Signature=adhoc Info.plist entries=48 TeamIdentifier=not set Sealed Resources version=2 rules=10 files=1525 Internal requirements count=0 size=12 /Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/PlugIns/AKInterface.bundle: replacing existing signature ``` ### What version of PlayCover are you using? 3.1.0 ### What version of macOS are you using? macOS beta (please state the specific version) ### Issue Language - [X] Yes my issue is written in English
kerem 2026-03-03 19:03:27 +03:00
Author
Owner

@kts-kris commented on GitHub (Sep 13, 2024):

image
<!-- gh-comment-id:2348089752 --> @kts-kris commented on GitHub (Sep 13, 2024): <img width="1480" alt="image" src="https://github.com/user-attachments/assets/6d8a9726-f7ff-47bf-8fde-7aec9e4cdd0f">
Author
Owner

@nbgesion commented on GitHub (Sep 27, 2024):

image

你有解决吗?我也一样,1.128版本以后,都会有这个问题。

<!-- gh-comment-id:2379107632 --> @nbgesion commented on GitHub (Sep 27, 2024): > <img alt="image" width="1480" src="https://private-user-images.githubusercontent.com/34789149/367164978-6d8a9726-f7ff-47bf-8fde-7aec9e4cdd0f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjc0Mzg1NDMsIm5iZiI6MTcyNzQzODI0MywicGF0aCI6Ii8zNDc4OTE0OS8zNjcxNjQ5NzgtNmQ4YTk3MjYtZjdmZi00N2JmLThmZGUtN2FlYzllNGNkZDBmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MjclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTI3VDExNTcyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThiMWE1N2FmMzQ0OTIwMTA0YmQ2Mjc3OGI5MzMwOTU1MGU3YzY2MzM5OWQyZjFhNWNhY2Y0YzdmYjdlZjhiOGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.x_99aYThrgpglgHPLbWdfXaTQVG_5Ph0wBrDhudpof4"> 你有解决吗?我也一样,1.128版本以后,都会有这个问题。
Author
Owner

@kts-kris commented on GitHub (Sep 29, 2024):

没有解决

image

你有解决吗?我也一样,1.128版本以后,都会有这个问题。

没有,甚至没有调试信息看出来是什么问题。

<!-- gh-comment-id:2381060492 --> @kts-kris commented on GitHub (Sep 29, 2024): 没有解决 > > <img alt="image" width="1480" src="https://private-user-images.githubusercontent.com/34789149/367164978-6d8a9726-f7ff-47bf-8fde-7aec9e4cdd0f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mjc0Mzg1NDMsIm5iZiI6MTcyNzQzODI0MywicGF0aCI6Ii8zNDc4OTE0OS8zNjcxNjQ5NzgtNmQ4YTk3MjYtZjdmZi00N2JmLThmZGUtN2FlYzllNGNkZDBmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA5MjclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwOTI3VDExNTcyM1omWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPThiMWE1N2FmMzQ0OTIwMTA0YmQ2Mjc3OGI5MzMwOTU1MGU3YzY2MzM5OWQyZjFhNWNhY2Y0YzdmYjdlZjhiOGImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.x_99aYThrgpglgHPLbWdfXaTQVG_5Ph0wBrDhudpof4"> > > 你有解决吗?我也一样,1.128版本以后,都会有这个问题。 没有,甚至没有调试信息看出来是什么问题。
Author
Owner

@Anson0414 commented on GitHub (Oct 23, 2024):

How to solve the problem

<!-- gh-comment-id:2433262396 --> @Anson0414 commented on GitHub (Oct 23, 2024): How to solve the problem
Author
Owner

@kts-kris commented on GitHub (Oct 24, 2024):

My Log

Version 15.2 (Build 24C5057p)
Installing PlayTools
Copying PlayTools to Frameworks
Executable=/Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>com.apple.security.app-sandbox</key><true/><key>com.apple.security.assets.movies.read-write</key><true/><key>com.apple.security.assets.music.read-write</key><true/><key>com.apple.security.assets.pictures.read-write</key><true/><key>com.apple.security.device.audio-input</key><true/><key>com.apple.security.device.bluetooth</key><true/><key>com.apple.security.device.camera</key><true/><key>com.apple.security.device.microphone</key><true/><key>com.apple.security.device.usb</key><true/><key>com.apple.security.files.downloads.read-write</key><true/><key>com.apple.security.files.user-selected.read-write</key><true/><key>com.apple.security.network.client</key><true/><key>com.apple.security.network.server</key><true/><key>com.apple.security.personal-information.addressbook</key><true/><key>com.apple.security.personal-information.calendars</key><true/><key>com.apple.security.personal-information.location</key><true/><key>com.apple.security.print</key><true/><key>com.apple.security.temporary-exception.sbpl</key><array><string>(allow user-preference-write (preference-domain &quot;.GlobalPreferences&quot;))</string><string>(allow user-preference-read (preference-domain &quot;.GlobalPreferences&quot;))</string><string>(allow file* file-read* file-write* file-write-data file-read-metadata file-ioctl (subpath &quot;/Users/liuweigang/Library/Containers/io.playcover.PlayCover&quot;))</string><string>(allow file* file-read* file-read-metadata file-ioctl (subpath &quot;/Users/liuweigang/Library/Frameworks/PlayTools.framework&quot;))</string><string>(allow file* file-read* (subpath &quot;/Users/liuweigang/Library/Group Containers/&quot;))</string></array></dict></plist>

System Integrity Protection status: enabled.

Executable=/Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore
Identifier=com.s3.sgzzlb.cn
Format=app bundle with Mach-O thin (arm64)
CodeDirectory v=20400 size=245513 flags=0x2(adhoc) hashes=7662+7 location=embedded
Signature=adhoc
Info.plist entries=48
TeamIdentifier=not set
Sealed Resources version=2 rules=10 files=1514
Internal requirements count=0 size=12

/Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/PlugIns/AKInterface.bundle: replacing existing signature
<!-- gh-comment-id:2434642965 --> @kts-kris commented on GitHub (Oct 24, 2024): My Log ```shell Version 15.2 (Build 24C5057p) Installing PlayTools Copying PlayTools to Frameworks Executable=/Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>com.apple.security.app-sandbox</key><true/><key>com.apple.security.assets.movies.read-write</key><true/><key>com.apple.security.assets.music.read-write</key><true/><key>com.apple.security.assets.pictures.read-write</key><true/><key>com.apple.security.device.audio-input</key><true/><key>com.apple.security.device.bluetooth</key><true/><key>com.apple.security.device.camera</key><true/><key>com.apple.security.device.microphone</key><true/><key>com.apple.security.device.usb</key><true/><key>com.apple.security.files.downloads.read-write</key><true/><key>com.apple.security.files.user-selected.read-write</key><true/><key>com.apple.security.network.client</key><true/><key>com.apple.security.network.server</key><true/><key>com.apple.security.personal-information.addressbook</key><true/><key>com.apple.security.personal-information.calendars</key><true/><key>com.apple.security.personal-information.location</key><true/><key>com.apple.security.print</key><true/><key>com.apple.security.temporary-exception.sbpl</key><array><string>(allow user-preference-write (preference-domain &quot;.GlobalPreferences&quot;))</string><string>(allow user-preference-read (preference-domain &quot;.GlobalPreferences&quot;))</string><string>(allow file* file-read* file-write* file-write-data file-read-metadata file-ioctl (subpath &quot;/Users/liuweigang/Library/Containers/io.playcover.PlayCover&quot;))</string><string>(allow file* file-read* file-read-metadata file-ioctl (subpath &quot;/Users/liuweigang/Library/Frameworks/PlayTools.framework&quot;))</string><string>(allow file* file-read* (subpath &quot;/Users/liuweigang/Library/Group Containers/&quot;))</string></array></dict></plist> System Integrity Protection status: enabled. Executable=/Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore Identifier=com.s3.sgzzlb.cn Format=app bundle with Mach-O thin (arm64) CodeDirectory v=20400 size=245513 flags=0x2(adhoc) hashes=7662+7 location=embedded Signature=adhoc Info.plist entries=48 TeamIdentifier=not set Sealed Resources version=2 rules=10 files=1514 Internal requirements count=0 size=12 /Users/liuweigang/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/PlugIns/AKInterface.bundle: replacing existing signature ```
Author
Owner

@nbgesion commented on GitHub (Nov 30, 2024):

解决了吗?这个问题到底是哪里引起的呢?是官方把验证给封了还是怎么?

<!-- gh-comment-id:2508910570 --> @nbgesion commented on GitHub (Nov 30, 2024): 解决了吗?这个问题到底是哪里引起的呢?是官方把验证给封了还是怎么?
Author
Owner

@donghaofei commented on GitHub (Oct 14, 2025):

My Log

版本15.7(版号24G222)
Installing PlayTools
Copying PlayTools to Frameworks

Executable=/private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/cn_appstore

application-identifier[GXW45JP9KG.com.s3.sgzzlb.cn](https://gxw45jp9kg.com.s3.sgzzlb.cn/)aps-environmentproductioncom.apple.developer.associated-domains[applinks:sgz-iae.lingxigames.com](https://applinks:sgz-iae.lingxigames.com/)com.apple.developer.team-identifierGXW45JP9KGkeychain-access-groups[GXW45JP9KG.com.s3.sgzzlb.cn](https://gxw45jp9kg.com.s3.sgzzlb.cn/)

/private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/cn_appstore: replacing existing signature

/private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/shortcut.framework/shortcut: replacing existing signature

/private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraSpatialAudioExtension.framework/AgoraSpatialAudioExtension: replacing existing signature

/private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraSoundTouch.framework/AgoraSoundTouch: replacing existing signature

/private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/Agorafdkaac.framework/Agorafdkaac: replacing existing signature

/private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraCore.framework/AgoraCore: replacing existing signature

/private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraRtcKit.framework/AgoraRtcKit: replacing existing signature

/private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension: replacing existing signature

/private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraFullAudioFormatExtension.framework/AgoraFullAudioFormatExtension: replacing existing signature

/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/PlugIns/AKInterface.bundle: replacing existing signature

/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app: replacing existing signature

System Integrity Protection status: enabled.

/Users/donghaofei/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app: replacing existing signature

/Users/donghaofei/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app: replacing existing signature

Executable=/Users/donghaofei/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore

com.apple.security.app-sandboxcom.apple.security.assets.movies.read-writecom.apple.security.assets.music.read-writecom.apple.security.assets.pictures.read-writecom.apple.security.device.audio-inputcom.apple.security.device.bluetoothcom.apple.security.device.cameracom.apple.security.device.microphonecom.apple.security.device.usbcom.apple.security.files.downloads.read-writecom.apple.security.files.user-selected.read-writecom.apple.security.network.clientcom.apple.security.network.servercom.apple.security.personal-information.addressbookcom.apple.security.personal-information.calendarscom.apple.security.personal-information.locationcom.apple.security.printcom.apple.security.temporary-exception.sbpl(allow user-preference-write (preference-domain ".GlobalPreferences"))(allow user-preference-read (preference-domain ".GlobalPreferences"))(allow file* file-read* file-write* file-write-data file-read-metadata file-ioctl (subpath "/Users/donghaofei/Library/Containers/io.playcover.PlayCover"))(allow file* file-read* file-read-metadata file-ioctl (subpath "/Users/donghaofei/Library/Frameworks/PlayTools.framework"))(allow file* file-read* (subpath "/Users/donghaofei/Library/Group Containers/"))(allow network* ipc-posix*)

Executable=/Users/donghaofei/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore
Identifier=com.s3.sgzzlb.cn
Format=app bundle with Mach-O thin (arm64)
CodeDirectory v=20400 size=253225 flags=0x2(adhoc) hashes=7903+7 location=embedded
Signature=adhoc
Info.plist entries=48
TeamIdentifier=not set
Sealed Resources version=2 rules=10 files=1650
Internal requirements count=0 size=12

<!-- gh-comment-id:3400725395 --> @donghaofei commented on GitHub (Oct 14, 2025): My Log 版本15.7(版号24G222) Installing PlayTools Copying PlayTools to Frameworks Executable=/private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/cn_appstore <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>application-identifier</key><string>[GXW45JP9KG.com.s3.sgzzlb.cn](https://gxw45jp9kg.com.s3.sgzzlb.cn/)</string><key>aps-environment</key><string>production</string><key>com.apple.developer.associated-domains</key><array><string>[applinks:sgz-iae.lingxigames.com](https://applinks:sgz-iae.lingxigames.com/)</string></array><key>com.apple.developer.team-identifier</key><string>GXW45JP9KG</string><key>keychain-access-groups</key><array><string>[GXW45JP9KG.com.s3.sgzzlb.cn](https://gxw45jp9kg.com.s3.sgzzlb.cn/)</string></array></dict></plist> /private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/cn_appstore: replacing existing signature /private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/shortcut.framework/shortcut: replacing existing signature /private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraSpatialAudioExtension.framework/AgoraSpatialAudioExtension: replacing existing signature /private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraSoundTouch.framework/AgoraSoundTouch: replacing existing signature /private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/Agorafdkaac.framework/Agorafdkaac: replacing existing signature /private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraCore.framework/AgoraCore: replacing existing signature /private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraRtcKit.framework/AgoraRtcKit: replacing existing signature /private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraAIDenoiseExtension.framework/AgoraAIDenoiseExtension: replacing existing signature /private/var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/Frameworks/AgoraFullAudioFormatExtension.framework/AgoraFullAudioFormatExtension: replacing existing signature /var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app/PlugIns/AKInterface.bundle: replacing existing signature /var/folders/cg/sr2w_5sj4xlf_rs1j38sd4200000gn/T/TemporaryItems/NSIRD_PlayCover_0tc2Mc/Payload/cn_appstore.app: replacing existing signature System Integrity Protection status: enabled. /Users/donghaofei/Library/Containers/io.playcover.PlayCover/Applications/[com.s3.sgzzlb.cn](https://com.s3.sgzzlb.cn/).app: replacing existing signature /Users/donghaofei/Library/Containers/io.playcover.PlayCover/Applications/[com.s3.sgzzlb.cn](https://com.s3.sgzzlb.cn/).app: replacing existing signature Executable=/Users/donghaofei/Library/Containers/io.playcover.PlayCover/Applications/[com.s3.sgzzlb.cn](https://com.s3.sgzzlb.cn/).app/cn_appstore <?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict><key>com.apple.security.app-sandbox</key><true/><key>com.apple.security.assets.movies.read-write</key><true/><key>com.apple.security.assets.music.read-write</key><true/><key>com.apple.security.assets.pictures.read-write</key><true/><key>com.apple.security.device.audio-input</key><true/><key>com.apple.security.device.bluetooth</key><true/><key>com.apple.security.device.camera</key><true/><key>com.apple.security.device.microphone</key><true/><key>com.apple.security.device.usb</key><true/><key>com.apple.security.files.downloads.read-write</key><true/><key>com.apple.security.files.user-selected.read-write</key><true/><key>com.apple.security.network.client</key><true/><key>com.apple.security.network.server</key><true/><key>com.apple.security.personal-information.addressbook</key><true/><key>com.apple.security.personal-information.calendars</key><true/><key>com.apple.security.personal-information.location</key><true/><key>com.apple.security.print</key><true/><key>com.apple.security.temporary-exception.sbpl</key><array><string>(allow user-preference-write (preference-domain &quot;.GlobalPreferences&quot;))</string><string>(allow user-preference-read (preference-domain &quot;.GlobalPreferences&quot;))</string><string>(allow file* file-read* file-write* file-write-data file-read-metadata file-ioctl (subpath &quot;/Users/donghaofei/Library/Containers/io.playcover.PlayCover&quot;))</string><string>(allow file* file-read* file-read-metadata file-ioctl (subpath &quot;/Users/donghaofei/Library/Frameworks/PlayTools.framework&quot;))</string><string>(allow file* file-read* (subpath &quot;/Users/donghaofei/Library/Group Containers/&quot;))</string><string>(allow network* ipc-posix*)</string></array></dict></plist> Executable=/Users/donghaofei/Library/Containers/io.playcover.PlayCover/Applications/[com.s3.sgzzlb.cn](https://com.s3.sgzzlb.cn/).app/cn_appstore Identifier=[com.s3.sgzzlb.cn](https://com.s3.sgzzlb.cn/) Format=app bundle with Mach-O thin (arm64) CodeDirectory v=20400 size=253225 flags=0x2(adhoc) hashes=7903+7 location=embedded Signature=adhoc Info.plist entries=48 TeamIdentifier=not set Sealed Resources version=2 rules=10 files=1650 Internal requirements count=0 size=12
Author
Owner

@viatearz commented on GitHub (Oct 17, 2025):

CRIWARE SonicSYNC causes a deadlock. Disabling SonicSYNC can fix this issue.
Run this command in Terminal:

EXECUTABLE=~/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore
perl -e 'open F, "+<:raw", $ARGV[0] or die $!; local $/; my $d = <F>; my $i = index($d, "\x00\x00\xC0\x3D\x60\x02\x80\x3D\x00\x84\x40\xAD\x02\x8C\x41\xAD\x62\x8E\x01\xAD\x60\x86\x00\xAD\x00\x84\x42\xAD\x02\x1C\xC0\x3D"); exit 1 if $i < 0; seek F, $i - 4, 0; print F "\x1F\x00\x00\xB9"; close F;' $EXECUTABLE
codesign -fs- $EXECUTABLE --deep --preserve-metadata=entitlements
<!-- gh-comment-id:3415312676 --> @viatearz commented on GitHub (Oct 17, 2025): CRIWARE SonicSYNC causes a deadlock. Disabling SonicSYNC can fix this issue. Run this command in Terminal: ``` bash EXECUTABLE=~/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore perl -e 'open F, "+<:raw", $ARGV[0] or die $!; local $/; my $d = <F>; my $i = index($d, "\x00\x00\xC0\x3D\x60\x02\x80\x3D\x00\x84\x40\xAD\x02\x8C\x41\xAD\x62\x8E\x01\xAD\x60\x86\x00\xAD\x00\x84\x42\xAD\x02\x1C\xC0\x3D"); exit 1 if $i < 0; seek F, $i - 4, 0; print F "\x1F\x00\x00\xB9"; close F;' $EXECUTABLE codesign -fs- $EXECUTABLE --deep --preserve-metadata=entitlements ```
Author
Owner

@kts-kris commented on GitHub (Jan 8, 2026):

CRIWARE SonicSYNC causes a deadlock. Disabling SonicSYNC can fix this issue. Run this command in Terminal:

EXECUTABLE=~/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore
perl -e 'open F, "+<:raw", ARGV[0] or die !; local $/; my $d = ; my $i = index($d, "\x00\x00\xC0\x3D\x60\x02\x80\x3D\x00\x84\x40\xAD\x02\x8C\x41\xAD\x62\x8E\x01\xAD\x60\x86\x00\xAD\x00\x84\x42\xAD\x02\x1C\xC0\x3D"); exit 1 if $i < 0; seek F, $i - 4, 0; print F "\x1F\x00\x00\xB9"; close F;' $EXECUTABLE
codesign -fs- $EXECUTABLE --deep --preserve-metadata=entitlements

It's good work for me! Thank you !

<!-- gh-comment-id:3722019629 --> @kts-kris commented on GitHub (Jan 8, 2026): > CRIWARE SonicSYNC causes a deadlock. Disabling SonicSYNC can fix this issue. Run this command in Terminal: > > EXECUTABLE=~/Library/Containers/io.playcover.PlayCover/Applications/com.s3.sgzzlb.cn.app/cn_appstore > perl -e 'open F, "+<:raw", $ARGV[0] or die $!; local $/; my $d = <F>; my $i = index($d, "\x00\x00\xC0\x3D\x60\x02\x80\x3D\x00\x84\x40\xAD\x02\x8C\x41\xAD\x62\x8E\x01\xAD\x60\x86\x00\xAD\x00\x84\x42\xAD\x02\x1C\xC0\x3D"); exit 1 if $i < 0; seek F, $i - 4, 0; print F "\x1F\x00\x00\xB9"; close F;' $EXECUTABLE > codesign -fs- $EXECUTABLE --deep --preserve-metadata=entitlements It's good work for me! Thank you !
Author
Owner

@kts-kris commented on GitHub (Jan 8, 2026):

Image As shown in the image, after resolving the freezing issue and successfully logging in, no elements on the main interface are clickable. It seems there is an invisible layer blocking the main interface.
<!-- gh-comment-id:3722048667 --> @kts-kris commented on GitHub (Jan 8, 2026): <img width="2956" height="1718" alt="Image" src="https://github.com/user-attachments/assets/7173536e-e318-49b2-91a6-d5851024cad3" /> As shown in the image, after resolving the freezing issue and successfully logging in, no elements on the main interface are clickable. It seems there is an invisible layer blocking the main interface.
Author
Owner

@kts-kris commented on GitHub (Jan 8, 2026):

https://github.com/user-attachments/assets/b9e91d26-eaa7-4a09-b731-e8f36b91126e

You can watch the video here.

<!-- gh-comment-id:3722267652 --> @kts-kris commented on GitHub (Jan 8, 2026): https://github.com/user-attachments/assets/b9e91d26-eaa7-4a09-b731-e8f36b91126e You can watch the video here.
Author
Owner

@viatearz commented on GitHub (Jan 8, 2026):

The last time I tried it, I was able to log in.
There might be an issue with their login SDK, or they are just blocking logins from PlayCover. I have no idea about it.

<!-- gh-comment-id:3723718581 --> @viatearz commented on GitHub (Jan 8, 2026): The last time I tried it, I was able to log in. There might be an issue with their login SDK, or they are just blocking logins from PlayCover. I have no idea about it.
Author
Owner

@kts-kris commented on GitHub (Jan 9, 2026):

This aligns with my assessment; it appears there was an error when the publisher's login SDK was performing certain actions. Thank you very much for your help.

<!-- gh-comment-id:3726615999 --> @kts-kris commented on GitHub (Jan 9, 2026): This aligns with my assessment; it appears there was an error when the publisher's login SDK was performing certain actions. Thank you very much for your help.
Author
Owner

@kts-kris commented on GitHub (Jan 9, 2026):

I used Proxyman to capture network traffic and compared the processes of PlayCover and iOS, then used GPT to generate an analysis. It seems the problem still lies in the environment. Below is the analysis report.

iOS Game Login Divergence on PlayCover: Login Succeeds but UI Locks Before Entering Server

Summary

When running 三国志·战略版 inside PlayCover, the login via Lingxi/AFlySDK/UC account completes successfully, but the game never transitions into the playable state. The UI becomes locked, with only the top-right close button responding.

The same application and account on a real iOS device function normally and can enter the game.

This issue may indicate a compatibility gap between PlayCover and the game's expected iOS environment capability during the post-login transition phase.


Environment

Item Value
Host macOS (user will supply exact version)
Emulator Layer PlayCover 3.1.0 (1352)
Game 三国志·战略版
Game Version iOS v1.159
Account System Lingxi / AFlySDK (UC)
Login Method Phone number
IPA Source Third-party extracted IPA
Device (Control Test) Real iPhone running same game version

Observed Behavior in PlayCover

After login:

  • Login window closes normally
  • Main game screen appears
  • Previous server label is displayed (e.g. 6103)
  • All action buttons are disabled
    • Enter
    • Select Server
    • Announcements
  • Only the top-right close (“X”) button works
  • No crash
  • No visible in-game error message

This suggests the game is stuck in an intermediate state early in the "enter server" flow.


Control Behavior on Real iOS Device

On a physical iPhone:

  • Same account login succeeds
  • Server selection UI becomes interactive
  • Game proceeds into server as normal

This confirms:

  • Account is valid
  • Backend does not reject the login
  • No server-side restriction is applied

Network Capture Comparison (PlayCover vs Real iOS)

Network captures were collected for both environments.

The chains differ in a consistent and repeatable way:

Phase PlayCover Real iOS
Lingxi Account Login ✔ success ✔ success
Server Recommendation ✔ success ✔ success
Player / Role Info Requests ✘ missing ✔ present
Reserve / Bind Info ✘ missing ✔ present
Push / Realtime Init ✘ missing ✔ present
Environment Reporting ✘ missing ✔ present
UI Unlock ✘ stays locked ✔ unlocks

Requests Shared by Both Environments

Both issue the following (examples):

  • magic-account.flysdk.cn → Lingxi account login
  • p10445-gangplank.ejoy.com → server recommendation
  • p10445-platform.ejoy.com → platform configs

All respond with success, indicating:

Backend did not reject PlayCover at the authentication layer.


Requests Only Issued on Real iOS (Not on PlayCover)

Only the real iPhone issues the following post-login requests:

1. Player Role Info

p10445-user-info.ejoy.com
/client_api/get_last_login_player

Retrieves player's last-used server/character.

2. Reserve / Bind Info

p10445-game-adapter.ejoy.com
/reserve_server/get_account_reserve_info

Used in the pre-enter-server preparation step.

3. Push / Realtime Setup

p10445-pusher.ejoy.com

Initializes push/notification/realtime channels.

4. Environment Reporting

gps.lingxigames.com
/sdk/rest/api.htm

Real device sends environment/telemetry required by SDK.


Preliminary Analysis

Network evidence suggests:

  • Login path completes successfully in both environments
  • Recommended server is retrieved successfully in both environments
  • Backend returns no rejection error (no ban codes, no 4xx/5xx)
  • Divergence occurs entirely after login but before the call to fetch player/role info

This implies the login state machine diverges on the client side, not on the server.

Observed flow:

[Both] Login Success →
[Both] Get Server Recommendation →
[iOS] Fetch Player/Role Info → Unlock UI → Enter Game
[PlayCover] (stops here) → UI remains locked

The fact that PlayCover never initiates the "role info / reserve info / push / telemetry" stage is significant.


Why This Matters for PlayCover Compatibility

This establishes a strong boundary:

  • The failure is not:

    • server authentication rejection
    • account restriction
    • network failure
    • TLS/HTTPS failure
  • The failure is:

    • an internal client state transition that fails to trigger under PlayCover

This points to missing / incompatible iOS capability such as:

  • Device capability APIs
  • Environment reporting APIs
  • Notification/push initialization
  • Telemetry required for state unlock
  • Model or platform identity (iPhone vs Mac)
  • AdServices / IDFA availability

No reverse-engineering of the game logic is needed to reach this conclusion.


Suggested Next Technical Checks for PlayCover Maintainers

Without modifying the game binary, useful areas to inspect would include:

  • UIDevice properties (model, type, idiom)
  • GPS / telemetry stubs
  • Push / notification capability surface
  • AdServices / IDFA availability
  • System API capability maps
  • Touch/event routing (only top-right region responds)

Reproducibility

User can provide the following if useful:

  • PlayCover network capture
  • Real iOS network capture
  • Video of both flows
  • System logs

Reproduction is stable and consistent across sessions.


Closing Note

From the compatibility standpoint, the key value of this report is:

PlayCover already passes the authentication and networking stages successfully. The remaining work lies in emulating enough of the iOS runtime environment to allow the game to complete its post-login client state transition.

<!-- gh-comment-id:3726752018 --> @kts-kris commented on GitHub (Jan 9, 2026): I used Proxyman to capture network traffic and compared the processes of PlayCover and iOS, then used GPT to generate an analysis. It seems the problem still lies in the environment. Below is the analysis report. # iOS Game Login Divergence on PlayCover: Login Succeeds but UI Locks Before Entering Server ## Summary When running **三国志·战略版** inside **PlayCover**, the login via Lingxi/AFlySDK/UC account completes successfully, but the game never transitions into the playable state. The UI becomes locked, with only the top-right close button responding. The same application and account on a real iOS device function normally and can enter the game. This issue may indicate a compatibility gap between PlayCover and the game's expected iOS environment capability during the post-login transition phase. --- ## Environment | Item | Value | |---|---| | Host | macOS (user will supply exact version) | | Emulator Layer | **PlayCover 3.1.0 (1352)** | | Game | 三国志·战略版 | | Game Version | **iOS v1.159** | | Account System | **Lingxi / AFlySDK (UC)** | | Login Method | Phone number | | IPA Source | Third-party extracted IPA | | Device (Control Test) | Real iPhone running same game version | --- ## Observed Behavior in PlayCover After login: - Login window closes normally - Main game screen appears - Previous server label is displayed (e.g. `6103`) - **All action buttons are disabled** - `Enter` - `Select Server` - `Announcements` - **Only the top-right close (“X”) button works** - No crash - No visible in-game error message This suggests the game is stuck in an intermediate state early in the "enter server" flow. --- ## Control Behavior on Real iOS Device On a physical iPhone: - Same account login succeeds - Server selection UI becomes interactive - Game proceeds into server as normal This confirms: - Account is valid - Backend does not reject the login - No server-side restriction is applied --- ## Network Capture Comparison (PlayCover vs Real iOS) Network captures were collected for both environments. The chains differ in a consistent and repeatable way: | Phase | PlayCover | Real iOS | |---|---|---| | Lingxi Account Login | ✔ success | ✔ success | | Server Recommendation | ✔ success | ✔ success | | Player / Role Info Requests | **✘ missing** | **✔ present** | | Reserve / Bind Info | **✘ missing** | **✔ present** | | Push / Realtime Init | **✘ missing** | **✔ present** | | Environment Reporting | **✘ missing** | **✔ present** | | UI Unlock | **✘ stays locked** | **✔ unlocks** | --- ### Requests Shared by Both Environments Both issue the following (examples): - `magic-account.flysdk.cn` → Lingxi account login - `p10445-gangplank.ejoy.com` → server recommendation - `p10445-platform.ejoy.com` → platform configs All respond with success, indicating: > Backend did **not** reject PlayCover at the authentication layer. --- ### Requests Only Issued on Real iOS (Not on PlayCover) Only the real iPhone issues the following post-login requests: #### 1. Player Role Info ``` p10445-user-info.ejoy.com /client_api/get_last_login_player ``` Retrieves player's last-used server/character. #### 2. Reserve / Bind Info ``` p10445-game-adapter.ejoy.com /reserve_server/get_account_reserve_info ``` Used in the pre-enter-server preparation step. #### 3. Push / Realtime Setup ``` p10445-pusher.ejoy.com ``` Initializes push/notification/realtime channels. #### 4. Environment Reporting ``` gps.lingxigames.com /sdk/rest/api.htm ``` Real device sends environment/telemetry required by SDK. --- ## Preliminary Analysis Network evidence suggests: - Login path completes successfully in both environments - Recommended server is retrieved successfully in both environments - Backend returns no rejection error (no ban codes, no 4xx/5xx) - Divergence occurs entirely **after** login but **before** the call to fetch player/role info This implies the login state machine diverges **on the client side**, not on the server. Observed flow: ``` [Both] Login Success → [Both] Get Server Recommendation → [iOS] Fetch Player/Role Info → Unlock UI → Enter Game [PlayCover] (stops here) → UI remains locked ``` The fact that PlayCover never initiates the "role info / reserve info / push / telemetry" stage is significant. --- ## Why This Matters for PlayCover Compatibility This establishes a strong boundary: - The failure is **not**: - server authentication rejection - account restriction - network failure - TLS/HTTPS failure - The failure **is**: - an internal client state transition that fails to trigger under PlayCover This points to missing / incompatible iOS capability such as: - Device capability APIs - Environment reporting APIs - Notification/push initialization - Telemetry required for state unlock - Model or platform identity (`iPhone` vs `Mac`) - AdServices / IDFA availability No reverse-engineering of the game logic is needed to reach this conclusion. --- ## Suggested Next Technical Checks for PlayCover Maintainers Without modifying the game binary, useful areas to inspect would include: - `UIDevice` properties (model, type, idiom) - GPS / telemetry stubs - Push / notification capability surface - AdServices / IDFA availability - System API capability maps - Touch/event routing (only top-right region responds) --- ## Reproducibility User can provide the following if useful: - PlayCover network capture - Real iOS network capture - Video of both flows - System logs Reproduction is stable and consistent across sessions. --- ## Closing Note From the compatibility standpoint, the key value of this report is: > PlayCover already passes the authentication and networking stages successfully. The remaining work lies in emulating enough of the iOS runtime environment to allow the game to complete its post-login client state transition.
Author
Owner

@kts-kris commented on GitHub (Jan 12, 2026):

@viatearz I've made a new discovery; it seems there's an issue with some kind of check during the login process that's preventing me from performing actions after logging in. I've summarized the specific details using GPT below:

iOS WebView Challenge Flow Blocks Login on PlayCover (caused by incomplete JSBridge)

Additional Technical Insight

During further inspection, the fullscreen transparent WebView blocking all touches was identified as loading:

https://general.aligames.com/ieu-sdk-h5/challenge.html

This document is part of Alibaba Games’ in-app SDK challenge mechanism. It is not a visual UI container by itself; instead it performs:

  • environment verification
  • human verification
  • challenge token generation
  • native callback
  • WebView self-closure

This flow completes successfully on real iOS devices, allowing users to enter the game.


Expected Behavior (Real iOS)

The H5 script executes:

EjoySdk.transparentBackground();
EjoySdk.getStartupData(...);
startChallenge(..., function (challengeData) {
    EjoySdk.notifyLuaAsync(...);
    EjoySdk.closeBrowser();
});

Meaning the expected runtime sequence is:

Load WebView → Request startup data from native → Run AegisCaptcha →
Return challenge result → Notify native (Lua) → Close WebView →
Allow underlying UI interaction

Observed Behavior (PlayCover)

In PlayCover, the flow stops early:

  • WebView loads successfully
  • Becomes transparent as expected
  • Does not receive the required JSBridge calls back from native
  • Never calls EjoySdk.notifyLuaAsync(...)
  • Never calls EjoySdk.closeBrowser()
  • Remains fullscreen, intercepting all touch input

This results in the appearance of the game UI being “frozen” while only the system close button remains interactive.


Sequence Diagram Comparison

Below is a sequence diagram contrasting Real iOS vs PlayCover behavior:

sequenceDiagram
    participant Game
    participant WKWebView
    participant JSBridge
    participant ChallengeJS as challenge.html
    participant AegisCaptcha as Captcha

    Game->>WKWebView: Load challenge.html
    WKWebView->>ChallengeJS: Execute JS
    ChallengeJS->>JSBridge: transparentBackground()
    ChallengeJS->>JSBridge: getStartupData()
    JSBridge-->>ChallengeJS: {clientId, scene, challengeInfo}
    ChallengeJS->>AegisCaptcha: startChallenge(...)
    AegisCaptcha-->>ChallengeJS: challengeData (success)
    ChallengeJS->>JSBridge: notifyLuaAsync(challengeData)
    ChallengeJS->>JSBridge: closeBrowser()
    WKWebView->>Game: WebView removed + UI unlocked

On PlayCover, the break occurs immediately after:

ChallengeJS -> JSBridge: getStartupData()

because JSBridge is missing.

So the effective sequence becomes:

sequenceDiagram
    participant Game
    participant WKWebView
    participant ChallengeJS as challenge.html

    Game->>WKWebView: Load challenge.html
    WKWebView->>ChallengeJS: Execute JS
    ChallengeJS->>WKWebView: transparentBackground()
    Note over ChallengeJS,WKWebView: JS waits for JSBridge
    ChallengeJS-x WKWebView: (No response)
    Note over WKWebView: WebView stays fullscreen + transparent\nblocks all touch events

This visualizes why the game UI appears visible but unresponsive.


Root Cause Category

The problem is not graphics, networking, rendering, or input.

The root cause is:

WKWebView JSBridge capability not implemented in PlayCover

Specifically Alibaba’s SDK expects:

  • window.webkit.messageHandlers.jsinterface.postMessage
  • EjoySdk.getStartupData
  • EjoySdk.notifyLuaAsync
  • EjoySdk.closeBrowser

None are currently available under PlayCover.


Minimal Compatibility Target for PlayCover

From a technical standpoint, the smallest meaningful compatibility improvement is:

Support enough JSBridge surface for challenge.html to complete and close the WebView

This would allow the game to reach a playable state without modifying the game or disabling its security features.


Suggested JSBridge Surface (Non-Speculative)

To support this H5-based challenge stage, PlayCover would need:

Function Purpose
transparentBackground() makes WebView overlay non-opaque
getStartupData() fetches environment parameters
notifyLuaAsync() returns challenge result to native
closeBrowser() removes overlay WebView
jsinterface.postMessage transport layer for above methods

None of these directly leak game data or require reverse engineering; they are standard hybrid-app IPC primitives.


Conclusion

This issue is best categorized as:

JSBridge compatibility gap rather than a login failure or server-side rejection

Fixing this would make the game playable on PlayCover without modifying the game or disabling its security features.

<!-- gh-comment-id:3737129341 --> @kts-kris commented on GitHub (Jan 12, 2026): @viatearz I've made a new discovery; it seems there's an issue with some kind of check during the login process that's preventing me from performing actions after logging in. I've summarized the specific details using GPT below: # iOS WebView Challenge Flow Blocks Login on PlayCover (caused by incomplete JSBridge) ## Additional Technical Insight During further inspection, the fullscreen transparent WebView blocking all touches was identified as loading: ``` https://general.aligames.com/ieu-sdk-h5/challenge.html ``` This document is part of Alibaba Games’ in-app SDK challenge mechanism. It is not a visual UI container by itself; instead it performs: - environment verification - human verification - challenge token generation - native callback - WebView self-closure This flow completes successfully on real iOS devices, allowing users to enter the game. --- ## Expected Behavior (Real iOS) The H5 script executes: ```js EjoySdk.transparentBackground(); EjoySdk.getStartupData(...); startChallenge(..., function (challengeData) { EjoySdk.notifyLuaAsync(...); EjoySdk.closeBrowser(); }); ``` Meaning the expected runtime sequence is: ``` Load WebView → Request startup data from native → Run AegisCaptcha → Return challenge result → Notify native (Lua) → Close WebView → Allow underlying UI interaction ``` --- ## Observed Behavior (PlayCover) In PlayCover, the flow stops early: - WebView loads successfully - Becomes transparent as expected - Does **not** receive the required JSBridge calls back from native - Never calls `EjoySdk.notifyLuaAsync(...)` - Never calls `EjoySdk.closeBrowser()` - Remains fullscreen, intercepting all touch input This results in the appearance of the game UI being “frozen” while only the system close button remains interactive. --- ## Sequence Diagram Comparison Below is a sequence diagram contrasting **Real iOS vs PlayCover** behavior: ```mermaid sequenceDiagram participant Game participant WKWebView participant JSBridge participant ChallengeJS as challenge.html participant AegisCaptcha as Captcha Game->>WKWebView: Load challenge.html WKWebView->>ChallengeJS: Execute JS ChallengeJS->>JSBridge: transparentBackground() ChallengeJS->>JSBridge: getStartupData() JSBridge-->>ChallengeJS: {clientId, scene, challengeInfo} ChallengeJS->>AegisCaptcha: startChallenge(...) AegisCaptcha-->>ChallengeJS: challengeData (success) ChallengeJS->>JSBridge: notifyLuaAsync(challengeData) ChallengeJS->>JSBridge: closeBrowser() WKWebView->>Game: WebView removed + UI unlocked ``` ### **On PlayCover**, the break occurs immediately after: ``` ChallengeJS -> JSBridge: getStartupData() ``` because `JSBridge` is missing. So the effective sequence becomes: ```mermaid sequenceDiagram participant Game participant WKWebView participant ChallengeJS as challenge.html Game->>WKWebView: Load challenge.html WKWebView->>ChallengeJS: Execute JS ChallengeJS->>WKWebView: transparentBackground() Note over ChallengeJS,WKWebView: JS waits for JSBridge ChallengeJS-x WKWebView: (No response) Note over WKWebView: WebView stays fullscreen + transparent\nblocks all touch events ``` This visualizes why the game UI appears visible but unresponsive. --- ## Root Cause Category The problem is not graphics, networking, rendering, or input. The root cause is: > `WKWebView` JSBridge capability not implemented in PlayCover Specifically Alibaba’s SDK expects: - `window.webkit.messageHandlers.jsinterface.postMessage` - `EjoySdk.getStartupData` - `EjoySdk.notifyLuaAsync` - `EjoySdk.closeBrowser` None are currently available under PlayCover. --- ## Minimal Compatibility Target for PlayCover From a technical standpoint, the smallest meaningful compatibility improvement is: > Support enough JSBridge surface for challenge.html to complete and close the WebView This would allow the game to reach a playable state without modifying the game or disabling its security features. --- ## Suggested JSBridge Surface (Non-Speculative) To support this H5-based challenge stage, PlayCover would need: | Function | Purpose | |---|---| | `transparentBackground()` | makes WebView overlay non-opaque | | `getStartupData()` | fetches environment parameters | | `notifyLuaAsync()` | returns challenge result to native | | `closeBrowser()` | removes overlay WebView | | `jsinterface.postMessage` | transport layer for above methods | None of these directly leak game data or require reverse engineering; they are standard hybrid-app IPC primitives. --- ## Conclusion This issue is best categorized as: > **JSBridge compatibility gap** rather than a login failure or server-side rejection Fixing this would make the game playable on PlayCover without modifying the game or disabling its security features.
Author
Owner

@viatearz commented on GitHub (Jan 13, 2026):

Thanks for your great work, I finally found the root cause.

The webpage is loaded in desktop mode by default, which results in
navigator.platform = "MacIntel" and navigator.maxTouchPoints = 0.

As a result, challenge.html fails to recognize the device as an iOS device, that means isIOS = false.

SDK.prototype.getDeviceType = function () {
  var ua = navigator.userAgent;
  var isIOS =
    /iPad|iPhone|iPod/i.test(navigator.platform) ||
    (navigator.platform === "MacIntel" &&
      navigator.maxTouchPoints > 1);
  if (/Harmony/i.test(ua)) {
    return "harmonyos";
  } else if (/android/i.test(ua)) {
    return "android";
  } else if (isIOS) {
    return "ios";
  } else if (/window/i.test(ua)) {
    return "PC";
  }
  return "other";
};

There’s no easy way to resolve this:

Click here to view the git patch.
diff --git a/PlayTools/Controls/PTFakeTouch/NSObject+Swizzle.m b/PlayTools/Controls/PTFakeTouch/NSObject+Swizzle.m
index 6796b2b..dd453c4 100644
--- a/PlayTools/Controls/PTFakeTouch/NSObject+Swizzle.m
+++ b/PlayTools/Controls/PTFakeTouch/NSObject+Swizzle.m
@@ -15,6 +15,7 @@
 #import <AVFoundation/AVFoundation.h>
 #import <CoreMotion/CoreMotion.h>
 #import <GameController/GameController.h>
+#import <WebKit/WebKit.h>
 
 __attribute__((visibility("hidden")))
 @interface PTSwizzleLoader : NSObject
@@ -161,6 +162,13 @@ - (void) hook_setCurrentSubscription:(VSSubscription *)currentSubscription {
     // do nothing
 }
 
+- (WKWebView *) hook_WKWebView_initWithFrame:(CGRect) frame
+                               configuration:(WKWebViewConfiguration *) config {
+    WKWebView *webView = [self hook_WKWebView_initWithFrame:frame configuration:config];
+    webView.configuration.defaultWebpagePreferences.preferredContentMode = WKContentModeMobile;
+    return webView;
+}
+
 - (NSString *)hook_stringByReplacingOccurrencesOfRegularExpressionPattern:(NSString *)pattern
                                                              withTemplate:(NSString *)template
                                                                   options:(NSRegularExpressionOptions)options
@@ -331,6 +339,8 @@ + (void)load {
 
     [objc_getClass("VSSubscriptionRegistrationCenter") swizzleInstanceMethod:@selector(setCurrentSubscription:) withMethod:@selector(hook_setCurrentSubscription:)];
 
+    [objc_getClass("WKWebView") swizzleInstanceMethod:@selector(initWithFrame:configuration:) withMethod:@selector(hook_WKWebView_initWithFrame:configuration:)];
+
     if (PlayInfo.isUnrealEngine) {
         // Fix NSRegularExpression crash when system language is set to Chinese
         CFStringEncoding encoding = CFStringGetSystemEncoding();
  • Option 2: Modify the returned HTML body via a proxy or similar methods.
<!-- gh-comment-id:3741702479 --> @viatearz commented on GitHub (Jan 13, 2026): Thanks for your great work, I finally found the root cause. The webpage is loaded in desktop mode by default, which results in `navigator.platform = "MacIntel"` and `navigator.maxTouchPoints = 0`. As a result, challenge.html fails to recognize the device as an iOS device, that means `isIOS = false`. ``` js SDK.prototype.getDeviceType = function () { var ua = navigator.userAgent; var isIOS = /iPad|iPhone|iPod/i.test(navigator.platform) || (navigator.platform === "MacIntel" && navigator.maxTouchPoints > 1); if (/Harmony/i.test(ua)) { return "harmonyos"; } else if (/android/i.test(ua)) { return "android"; } else if (isIOS) { return "ios"; } else if (/window/i.test(ua)) { return "PC"; } return "other"; }; ``` There’s no easy way to resolve this: - Option 1: Modify [PlayCover’s code](https://github.com/PlayCover/PlayTools), force the webpage to be loaded in mobile mode. <details> <summary>Click here to view the git patch.</summary> ``` diff diff --git a/PlayTools/Controls/PTFakeTouch/NSObject+Swizzle.m b/PlayTools/Controls/PTFakeTouch/NSObject+Swizzle.m index 6796b2b..dd453c4 100644 --- a/PlayTools/Controls/PTFakeTouch/NSObject+Swizzle.m +++ b/PlayTools/Controls/PTFakeTouch/NSObject+Swizzle.m @@ -15,6 +15,7 @@ #import <AVFoundation/AVFoundation.h> #import <CoreMotion/CoreMotion.h> #import <GameController/GameController.h> +#import <WebKit/WebKit.h> __attribute__((visibility("hidden"))) @interface PTSwizzleLoader : NSObject @@ -161,6 +162,13 @@ - (void) hook_setCurrentSubscription:(VSSubscription *)currentSubscription { // do nothing } +- (WKWebView *) hook_WKWebView_initWithFrame:(CGRect) frame + configuration:(WKWebViewConfiguration *) config { + WKWebView *webView = [self hook_WKWebView_initWithFrame:frame configuration:config]; + webView.configuration.defaultWebpagePreferences.preferredContentMode = WKContentModeMobile; + return webView; +} + - (NSString *)hook_stringByReplacingOccurrencesOfRegularExpressionPattern:(NSString *)pattern withTemplate:(NSString *)template options:(NSRegularExpressionOptions)options @@ -331,6 +339,8 @@ + (void)load { [objc_getClass("VSSubscriptionRegistrationCenter") swizzleInstanceMethod:@selector(setCurrentSubscription:) withMethod:@selector(hook_setCurrentSubscription:)]; + [objc_getClass("WKWebView") swizzleInstanceMethod:@selector(initWithFrame:configuration:) withMethod:@selector(hook_WKWebView_initWithFrame:configuration:)]; + if (PlayInfo.isUnrealEngine) { // Fix NSRegularExpression crash when system language is set to Chinese CFStringEncoding encoding = CFStringGetSystemEncoding(); ``` </details> - Option 2: Modify the returned HTML body via a proxy or similar methods.
Author
Owner

@kts-kris commented on GitHub (Jan 14, 2026):

Thank you again for your attention and great work. I now understand the reason. Based on what was discussed above, the core issue was that AliGame's Zeus anti-fraud system was triggered. I needed to figure out why this was happening, and I discovered it was because I was using a US proxy as my global exit point for an extended period, which triggered Zeus's anti-fraud system and required verification. However, there was a bug in the verification process, preventing it from executing successfully within the app loaded by PlayCover. After testing, I turned off the proxy, and everything worked normally. Therefore, the real solution was resolving the SonicSYNC deadlock. So, thank you again! You've shown me the greatness of the community, thank you!

<!-- gh-comment-id:3748041941 --> @kts-kris commented on GitHub (Jan 14, 2026): Thank you again for your attention and great work. I now understand the reason. Based on what was discussed above, the core issue was that AliGame's Zeus anti-fraud system was triggered. I needed to figure out why this was happening, and I discovered it was because I was using a US proxy as my global exit point for an extended period, which triggered Zeus's anti-fraud system and required verification. However, there was a bug in the verification process, preventing it from executing successfully within the app loaded by PlayCover. After testing, I turned off the proxy, and everything worked normally. Therefore, the real solution was resolving the SonicSYNC deadlock. So, thank you again! You've shown me the greatness of the community, thank you!
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/PlayCover#1062
No description provided.