Comments (26)
I got approval for both the App Store versions to use multicast. So, hopefully it'll start working after the next update, if it hasn't already? I'm not sure what else I need to do.
from ppsspp.
Okay, here is iOS artifacts with
com.apple.developer.networking.multicast
included in it's Info.plist generated from this branch/PR ANR2MERefork#12 so there won't be file attribute issue hereiOS artifact: https://github.com/ANR2MERefork/ppsspp/actions/runs/9378116947/artifacts/1569463815
Entitlements should bundle into code sign, not in Info.plist, see also: https://developer.apple.com/documentation/bundleresources/entitlements/com_apple_developer_networking_multicast?changes=l__9&language=objc
This entitlements only allowed request by "Apple Developer". Which means sideload users signing without an "paid Apple Developer Account" can't get this work. AppStore users not affected because you have already paid for that.
But you do need add a local network desciption (NSLocalNetworkUsageDescription) in Info.plist for upload to AppStore:
See also:
https://developer.apple.com/documentation/bundleresources/information_property_list/nslocalnetworkusagedescription?language=objc
It's requested in iOS14.0+.
cc @hrydgard
from ppsspp.
You mean as long the App ID is the same one with the one having the entitlement provisioned it will also works when sideloaded?
Yes
from ppsspp.
Same issue, it seems:
https://forums.ppsspp.org/showthread.php?tid=29904
from ppsspp.
May be try to update the miniupnp repo, there might be new commits there
from ppsspp.
A lot of new commits actually. Can someone test the PR? #19249
from ppsspp.
Here is the iOS IPA artifact (for testing) generated after that PR https://github.com/hrydgard/ppsspp/actions/runs/9375693751/artifacts/1568951264
from ppsspp.
No luck! UPnP seems to work on my desktop but is still giving me an error on the test build.
Something else that was mentioned in forum threads discussing the issue was the UPnP timeout, which might be a factor here. Worth mentioning is that the app does request permission to view devices on the local network.
from ppsspp.
Did you gave the permission? because UPnP use SDDP (Simple Device Discovery Protocol) through UDP port 1900 to detect UPnP-compatible devices as i remembered.
from ppsspp.
May be similar issue to this https://superuser.com/questions/1512639/upnp-server-behind-firewall-wont-show-up-in-ios-apps
I'm in the middle of setting up a server net at home. The firewall between user and server net does UPnP-Routing via smcroute (and firewalling with iptables plus ipset). All in all it works perfectly. On my PCs and on my Android phone the media server (minidlna) gets found an serves the media files without question. Only the iOS devices (iPad and iPhone) make trouble. VLC recognizes the server here too, but the iOS version doesn't support resuming to an earlier timestamp after stopping the video. And two other apps don't find the server (in particular XtremePlayer which would be the first choice).
Something related to TTL ? not sure how to change that programmatically (may be using setsockopt
with IP_TTL as parameter), especially since we don't have access to the miniupnp's socket, but the default TTL on iOS is 64 i think, so shouldn't be an issue (unless it's changed recently on newer iOS)
Finally with help from another forum I was able to identify the cause of this malfunction. The players that won't find the server send request packets with a TTL of 1 on the IP layer. Hence they aren't routable at all... The functioning ones (e.g. VLC) use higher values for TTL (in the case of VLC: 4). So, albeit I'm not able to fix this for good now I'm glad to know what's going on.
But it's old issue from 2019, so not sure.
from ppsspp.
Yes, I gave PPSSPP access to the local network. There's one or two posts I've seen of people able to use multiplayer, and a guide from about 2 or 3 months ago on how to connect to the soccom.cc servers using a modified IPA and specific add-on;
https://youtu.be/yvMXzTuwnvE?si=o1n3VAT_-L2LqWov
from ppsspp.
Yes, I gave PPSSPP access to the local network. There's one or two posts I've seen of people able to use multiplayer, and a guide from about 2 or 3 months ago on how to connect to the soccom.cc servers using a modified IPA and specific add-on;
Is that version still have working UPnP on your test? because it's only modified to support infrastructure i think, and the add-on you mean is the infra_plugin, right?
from ppsspp.
Btw the PR that expose UPnP timeout in networking settings is here #18867
But it was tested before and reported not to have a difference (although it uses an older version of miniupnp library during the test)
from ppsspp.
This might also be related (Multicast Networking entitlement issue?) https://forums.developer.apple.com/forums/thread/661606
However, I'm concerned about the app currently in production on the App Store, and how it behaves on various versions of iOS. Especially, it seems our app (built with Xcode 11) is still able to send multicast requests even if run on an iOS 14 device. However the app built with Xcode 12 systematically fails to send requests on the local network (through CFSocketSendData) on the same iOS 14 device, the local network access being properly granted by the user.
May be we need to add the com.apple.developer.networking.multicast
key in the Info.plist file, like:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.developer.networking.multicast</key>
<true/>
</dict>
<dict/>
</plist>
But the Info.plist file inside the IPA seems to have a different content than the one in source code, was it auto-generated?
from ppsspp.
@yzsnes try this IPA. i only modified the Info.plist inside the IPA from the artifact above https://www.dropbox.com/scl/fi/lj97osa8ubq4zc8qcdukb/PPSSPP-iOS.zip?rlkey=jwr9j5x2wgnfy8bwvgfvx1zbn&st=ormahmcl&dl=0
PS: because i edited the file on Windows, the Info.plist attributes became different than it was, so not sure whether the new attribute will be accepted by iOS or not.
Edit: oops i put the com.apple.developer.networking.multicast
key at the wrong location, reuploading the zip now.
from ppsspp.
Okay, here is iOS artifacts with com.apple.developer.networking.multicast
included in it's Info.plist generated from this branch/PR ANR2MERefork#12 so there won't be file attribute issue here
iOS artifact: https://github.com/ANR2MERefork/ppsspp/actions/runs/9378116947/artifacts/1569463815
from ppsspp.
Oh! I'll make sure to add that for the next update.
from ppsspp.
Oh right, I have to ask Apple for the entitlement too. Will do, hopefully they'll accept.
from ppsspp.
Is this mean only PPSSPP Gold users will be able to detects UPnP properly?
It will make debugging app that use broadcast/multicast became difficult isn't? (since debug builds will most-likely being sideloaded)
from ppsspp.
I've put in requests for both the free version and the gold version (both App Store versions).
As for sideloaded builds, I don't know how to solve that.
from ppsspp.
Is this mean only PPSSPP Gold users will be able to detects UPnP properly? It will make debugging app that use broadcast/multicast became difficult isn't? (since debug builds will most-likely being sideloaded)
...No
You are pay for Apple, not for PPSSPP
from ppsspp.
You mean as long the App ID is the same one with the one having the entitlement provisioned it will also works when sideloaded?
from ppsspp.
How about unity the style?
cc @hrydgard
from ppsspp.
Hm, we don't use the same app ID, but could change the sideload versions' ID though.
OK, I'll move them together and make more similar.
from ppsspp.
The com.apple.developer.networking.multicast
also need to be added to Entitlements.plist too isn't? something like https://github.com/hrydgard/ppsspp/blob/master/macOS/Entitlements.plist
Edit: probably not, since adding it manually could cause signing issue according to this https://stackoverflow.com/questions/76591665/is-it-enough-to-add-entitlements-manually
The entitlement needs to be added to your provisioning profile in the Apple developer portal. You can't add the entitlement until Apple has approved it and made it available to add to your provisioning profile. If you add the entitlement manually to your entitlements plist then you will get a code signing failure because the entitlements file does not match the provisioning profile.
from ppsspp.
The
com.apple.developer.networking.multicast
also need to be added to Entitlements.plist too isn't? something like https://github.com/hrydgard/ppsspp/blob/master/macOS/Entitlements.plistEdit: probably not, since adding it manually could cause signing issue according to this https://stackoverflow.com/questions/76591665/is-it-enough-to-add-entitlements-manually
The entitlement needs to be added to your provisioning profile in the Apple developer portal. You can't add the entitlement until Apple has approved it and made it available to add to your provisioning profile. If you add the entitlement manually to your entitlements plist then you will get a code signing failure because the entitlements file does not match the provisioning profile.
Read this: #19246 (comment)
See also: https://developer.apple.com/documentation/bundleresources/entitlements?language=objc
from ppsspp.
Related Issues (20)
- iOS: Recents pointing to games in the app's Documents doesn't work properly HOT 1
- Linux 32-bit and 64-bit Versions HOT 14
- FPS counter doesn't work properly with software render HOT 12
- Android: Switching memstick folder back to "private data" doesn't complete nicely
- multiple tabs in memory layout
- Game Crashing on iOS HOT 4
- Platypus: OpenGL rendering error
- Wild ARM XF - Audio Bug HOT 5
- Should switch the non-app-store iOS build to use statically linked MoltenVK HOT 4
- SOCOM Fireteam Bravo 3: Z-buffer glitch on character customization screen HOT 4
- Please allow .5 and .75 Rendering Resolution HOT 4
- Make the proAdhocServer lighter HOT 4
- Documentation on building PPSSPP is missing specific dependency (libglew-dev for Debian) HOT 1
- 30fps games running at 60fps. HOT 3
- Compilation failed on Raspberry Pi HOT 3
- A advice about action of Xbox button or PS button on IOS HOT 1
- GE debugger crash while stepping through the textures
- PPSSPP (ios) closes itself/crashes when playing invizimals and invizimals shadow zone HOT 4
- JIT/Dynarec crash upon load on RISC-V HOT 8
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ppsspp.