Is there a GCM registrationId pattern?

12,770

Solution 1

The documentation doesn't specify any pattern, therefore any valid string is allowed. The format may change in the future; please do not validate this input against any pattern, as this may cause your app to break if this happens.

As with the "registration_id" field, the upper bound on size is the max size for a cookie, which is 4K (4096 bytes).

Solution 2

I hasn't seen any official information about format of GCM registrationId, but I've analyzed our database of such IDs and can make following conclusions:

  • in most cases length of a registrationID equals 162 symbols, but can be variations to 119 symbols, maybe other lengths too;
  • it consists only from this chars: [0-9a-zA-Z\-\_]*
  • every regID contains one or both of "delimiters": - (minus) or _ (underline)
Share:
12,770
Sebastien Lorber
Author by

Sebastien Lorber

React expert & early adopter (January 2014) Freelance, working for Facebook/Meta as Docusaurus maintainer since 2020. Author of ThisWeekInReact.com, the best newsletter to stay up-to-date with the React ecosystem:

Updated on June 23, 2022

Comments

  • Sebastien Lorber
    Sebastien Lorber almost 2 years
    /**
     * @author Sebastien Lorber <i>([email protected])</i>
     */
    public enum EnumDeviceType {
    
        ANDROID {
            @Override
            public boolean validateDeviceIdentifier(String deviceIdentifier) {
                Preconditions.checkArgument( !Strings.isNullOrEmpty(deviceIdentifier) );
                return ANDROID_REGISTRATION_ID_PATTERN.matcher(deviceIdentifier).matches();
            }
        },
        IOS {
            @Override
            public boolean validateDeviceIdentifier(String deviceIdentifier) {
                Preconditions.checkArgument( !Strings.isNullOrEmpty(deviceIdentifier) );
                return IOS_DEVICE_TOKEN_PATTERN.matcher(deviceIdentifier).matches();
            }
        },
        ;
    
        // TODO how do we validate registration Ids
        public static final Pattern ANDROID_REGISTRATION_ID_PATTERN = Pattern.compile(".*");
        // IOS device token is a 64 HEX string
        public static final Pattern IOS_DEVICE_TOKEN_PATTERN = Pattern.compile("[a-fA-F0-9]{64,64}");
    
    
        public abstract boolean validateDeviceIdentifier(String deviceIdentifier);
    
    
        public boolean isIos() {
            return IOS.equals(this);
        }
    
        public boolean isAndroid() {
            return ANDROID.equals(this);
        }
    
    
    }
    

    Is there any known pattern for the GCM registrationId i can use to validate on application that the registrationId has a correct shape? I would just like to know which range of chars it has, which is the minimum and maximum size for exemple... or any other information...