If I want iOS App App1 to launch App2 on a device, then does the CFBundleURLName need to match the CFBundleIdentifier in the CFBundleURLTypes in the Info.plist?

For example, if I have in App1

<key>CFBundleIdentifier</key>
<string>com.foo.App1</string>
...
<key>CFBundleURLTypes</key>
<array>
<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fooscheme</string>
        </array>
        <key>CFBundleURLName</key>
        <string>com.foo.App1</string>
    </dict>
</array>

In the above case, App2 can launch "fooscheme:" urls in App1. However, if I change App1's Info.plist to include

<key>CFBundleURLTypes</key>
<array>
    <dict>
        <key>CFBundleURLSchemes</key>
        <array>
            <string>fooscheme</string>
        </array>
        <key>CFBundleURLName</key>
        <string>com.foo.xyz</string>
    </dict>
</array>

i.e., a CFBundleURLName != CFBundleIdentifier, then App2 can no longer launch "fooscheme:" urls in App1.

Any ideas why?

I don't see any Apple documentation that CFBundleIdentifier must match CFBundleURLName, but this seems to be the case in practice. Or am I missing something?

Thanks!

Edit
Report