Firebase invites says invitation sent but has not

2019-04-03 03:00发布

问题:

I've trying to send invitations with Firebase Invites. When select an email from a contact, Firebase says that has sent the invitation, but the email is never received.

On the console the SHA1 certicates are configurated.

The errorcode returned is always RESULT_OK and the number of invitations returned from AppInviteInvitation.getInvitationIds is correct.

The SDK is updated on gradle with the latest version, 10.0.1, like explained on the documentation.

The code that creates the invitation is:

Intent intent = new AppInviteInvitation.IntentBuilder(title)
                .setMessage(msg)
                .setCallToActionText(callToActionText)
                .setOtherPlatformsTargetApplication(AppInviteInvitation.IntentBuilder.PlatformMode.PROJECT_PLATFORM_IOS, IOS_CLIENT_ID)
                .build();

Any ideas?

回答1:

I had the same problem and I managed to fix it, although I am not pretty sure what step actually helped.

It's worth specifying that in my case the email was perfectly sent when I removed the method call:

.setOtherPlatformsTargetApplication(...)

The following steps were applied:

  1. All fields were filled on Firebase console for Android and iOS project settings (including App ID Prefix and App Store ID).
  2. SHA-256 hashes (from debug and release keystore) were added for Firebase Android project settings:

    keytool -exportcert -keystore path-to-debug-or-production-keystore -list -v
    
  3. Updated google-services.json was downloaded from Firebase Android project settings and added to the application root (with GoogleServicesJson Build Action for Xamarin). So the file among others contains the following:

    ...
    "appinvite_service": {
      "status": 2,
      "other_platform_oauth_client": [
        {
          "client_id": "1234567890-specified_ios_client_id.apps.googleusercontent.com",
          "client_type": 2,
          "ios_info": {
            "bundle_id": "ios.app.bundle.id",
            "app_store_id": "9876543210"
          }
        },
        ...
      ]
    }
    ...
    

The specified client_id is the same in .setOtherPlatformsTargetApplication(...) method call and in google-services.json

Also Firebase Invites had been previously adjusted for the iOS project, but I don't see if it could help for the Android anyhow.



回答2:

Removing .setOtherPlatformsTargetApplication(...) allowed Android to send invitations again.

When invitations are received on iOS though, they work correctly opening link with:

  • Gmail or Mail with app installed (opens app correctly)

They do not work properly:

  • Link reading email in Safari with app not installed, goes to google play store
    • Link in Gmail or Mail app, with app not installed, goes to google play store