Search Issue Tracker
Fixed in 2018.1.X
Fixed in 5.6.X, 2017.1.X, 2017.2.X, 2017.3.X
Votes
1
Found in
2017.2.0f3
Issue ID
960439
Regression
No
[iOS 11] Build crashes on remotear`::UnityUpdateDisplayList() when launching app from URL with AirPlay connected
To reproduce:
1. Open project attached by the user
2. Build it for iOS platform
3. Open build .xcodeproj file in XCode
4. Go to Product -> Scheme -> Edit Scheme
5. Select "Info" tab and tick "Wait for executable to be launched"
6. Build to device
7. Connect the device to Apple TV (to use screen mirroring)
8. After the device is connected to Apple TV go to Safari (on device) and type: airplaycrash://
9. It will ask to open an app, hit open
Expected result: Application should be launched from URL
Actual result: Application crashes on start
Reproduced with: 5.6.3p4, 2017.2.0f3, 2017.3.0b5, 2018.1.0a1
Device: iPhone 6s iOS 11.0
Not reproducible with iPad mini 3 iOS 10.3
Fixed in: 2018.1.0b1
Backported to: 2017.3.0p2, 2017.2.1p2, 2017.1.3p1, 5.6.5p3
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- [Dragon Crashers] Build fails in U6
- [Dragon Crashers] 4 Shader error messages on import
- [Dragon Crashers] Readme text is white on light grey
- Cursor stays in front of the first character when entering text in the TextMeshPro field
- Searching in Hierarchy causes unwanted component calls
jsmits062
Mar 14, 2018 16:05
@BRIGHTONRICH are you able to post a DisplayManager fix that doesn't break airplay? The concern is that if apple is rejecting apps because of this crash they may still expect airplay to be functioning properly. In other words your post may help prevent the crash (for older versions of unity) - but wouldn't the build still be at risk for an apple submission rejection if airplay isn't working.?
brightonrich
Mar 14, 2018 15:06
Unfortunately, we are not planning any further patch releases for versions older than 5.6.
However, as a workaround and only if you're not using AirPlay or Secondary Displays:
Modify the trampoline code generated for your project at 'Classes/Unity/DisplayManager.mm' to not add observers for 'UIScreenDidConnectNotification' and 'UIScreenDidDisconnectNotification'
So:
```
- (id)init
{
if( (self = [super init]) )
{
/* [[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(screenDidConnect:)
name:UIScreenDidConnectNotification
object:nil
];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(screenDidDisconnect:)
name:UIScreenDidDisconnectNotification
object:nil
];
*/
_displayConnection = [NSMapTable
mapTableWithKeyOptions:NSPointerFunctionsStrongMemory | NSPointerFunctionsObjectPointerPersonality
valueOptions:NSPointerFunctionsStrongMemory | NSPointerFunctionsObjectPointerPersonality
];
for(UIScreen* screen in [UIScreen screens])
[self registerScreen:screen];
_mainDisplay = self[[UIScreen mainScreen]];
}
return self;
}
```
You can also alter the installed Unity playback engine directly at 'Unity/PlaybackEngines/iOSSupport/Trampoline/Classes/Unity/DisplayManager.mm'
This should prevent the crash for 5.4.
4.7 Trampoline can be fixed in the same way or again via the playback engine at 'Unity.app/Contents/PlaybackEngines/iossupport/Trampoline/Classes/Unity' or the Windows equivalent.
ALSY
Mar 14, 2018 09:56
Please backport this to 4.7 versions! our game is still based on that version.
UltraJeff
Mar 13, 2018 22:38
Will this be backported to 5.4 versions?
funfile
Mar 13, 2018 22:15
backport to 5.4 please!
kenjilyx
Mar 13, 2018 22:04
Will this fix be backported to 5.4 versions? Our game is still on 5.4 and got rejected by Apple.
brightonrich
Mar 13, 2018 15:18
The fix has been backported and will be in 5.6.5p3
wuang
Mar 13, 2018 13:08
Please backport this to 5.6 versions!!!!!!
PStal
Mar 13, 2018 12:21
Please backport this also to 5.6 versions since this is causing many rejections from Apple Review Team...
HidingGlass
Mar 12, 2018 14:34
Glad to have found this fix. We believe this bug was causing iOS app-store rejections because testers were using screen-streaming. Something we would never test in-house!