Player profile links do not work when sourced from NFC tag

Trying to read the deep link to a player profile from an NFC tag on an Android device and stock Chrome browser always results in the Play Store page being displayed on the device instead of the player profile. The same link works as expected when converted to a QR-Code.

eg create a QR-Code from https://link.ingress.com/?link=https%3a%2f%2fintel.ingress.com%2fagent%2fVulch&apn=com.nianticproject.ingress&isi=576505181&ibi=com.google.ingress&ifl=https%3a%2f%2fapps.apple.com%2fapp%2fingress%2fid576505181&ofl=https%3a%2f%2fwww.ingress.com%2f and reading it on an Android device works.

Encode the same link onto an NFC tag and scan that with the same device and the Play Store is always displayed.

This appears to be due to the Ingress Scanner app registering the intent "android.intent.action.VIEW" to handle 'android:host="link.ingress.com"' for the QR-Code source, but to handle the NFC source requires the intent "android.nfc.action.NDEF_DISCOVERED" to also be registered for the same host domain.

Tested on various Android 8 and 10 devices with Ingress app 2.115.4-aa5bba70 both on WiFi and UK phone networks EE and Three.

Problem was found when making team badges for the recent Brighton Echo anomaly with embedded NFC tags.

1
1 votes

Active · Last Updated

Comments

  • KarM3LKarM3L ✭✭✭✭

    Deep links don't work when used directly there are multiple discussions about it, I suspect @Perringaiden can find them quicker than I...


    Why would you expect ingress client to do anything with NFC


    There's a workaround that your QR codes are Likely using, use a server side redirect to open the correct intent....

  • sounds like an android OS related topic, or?

  • MoogModularMoogModular ✭✭✭✭✭

    It's the share link functionality with Chrome.

    However, I wonder if using the functionality in the browser adds a https as the link is not a standard protocol

  • VulchVulch ✭✭

    QR-Codes are not using a work around. The links can be used in a QR-Code exactly as created by the Ingress app, as the app correctly registers an intent to handle the link.ingress.com domain. Registering an intent for the protocol, domain or path part of a link or a combination of parts allows an app to be offered the chance to handle a link before the default browser gets offered the link, eg when following a link from a Telgram message. Hence IITC can deal with intel.ingress.com or ingress.com/intel links, Ingress itself uses a special protocol (ingress://) and domain (nianticchat) for campfire. The only difference when wanting to handle a link from an NFC tag is that a different intent needs to be registered by the app. Going from memory of a trial Android app project I worked on 7 or 8 years ago the handler code is 95%+ the same, the NDEF data from the tag usually uses a simple value for the protocol part instead of spelling it out to save space so needs a small amount of extra code.

Sign In or Register to comment.