通过您的 iOS 应用发送和接收 Firebase 邀请

前提条件

Firebase 邀请要求使用 iOS 8 或更新版本。您可以在应用中将 iOS 7 定为目标,但如果应用不是在 iOS 8 或更新版本中运行,则对于 Firebase 邀请 SDK 的所有调用都不会有任何作用。

开始前的准备工作

  1. 如果您尚未将应用关联到您的 Firebase 项目,请通过 Firebase 控制台进行关联。
  2. 如果您尚未启用 Firebase 动态链接,请在 Firebase 控制台中打开“动态链接”部分,然后在看到提示时接受服务条款,以启用动态链接。由于 Firebase 邀请基于 Firebase 动态链接构建而成,因此您必须启用 Firebase 动态链接,方可使用 Firebase 邀请。
  3. 将 Firebase 添加到您的 iOS 项目。在您的 Podfile 中添加以下 Pod:
    pod 'Firebase/Core'
  4. pod 'Firebase/Invites'
  5. UIApplicationDelegate 中导入 Firebase 模块:

    Swift

    import Firebase
    

    Objective-C

    @import Firebase;
    
  6. 配置一个 FirebaseApp 共享实例,通常是在您应用的 application:didFinishLaunchingWithOptions: 方法中配置:

    Swift

    // Use Firebase library to configure APIs
    FirebaseApp.configure()
    

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
    
  7. 在 Xcode 中,修改项目的 Info.plist,然后添加一个包含键 NSContactsUsageDescription(“隐私权 - 联系人信息使用情况说明”)的属性和一个描述您的应用如何使用联系人数据的值。例如:“MyRecipeApp 使用您的联系人信息帮助您轻松与好友分享食谱”。
  8. 在您的应用中实现 Google 登录。用户必须登录自己的 Google 帐号才能发送邀请。

处理传入的应用邀请

配置您的应用后,接下来必须让您的应用能处理传入的应用邀请。

当用户在自己的 iOS 设备上选中传入的应用邀请时,如果该用户尚未安装您的应用,则可选择从 iTunes App Store 页面安装您的应用。您的应用最好能在用户首次打开它时就提供个性化的加入体验,以增强用户与您的应用的交互,并吸引他们长期使用您的应用。为了帮助您做到这一点,邀请 SDK 提供了与用户收到的应用邀请相关联的深层链接和邀请 ID。

Swift

@available(iOS 9.0, *)
func application(_ application: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any])
  -> Bool {
    return self.application(application, open: url, sourceApplication: options[UIApplicationOpenURLOptionsKey.sourceApplication] as? String, annotation: "")
}

func application(_ application: UIApplication,
  open url: URL, sourceApplication: String?, annotation: Any) -> Bool {
  if GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation) {
    return true
  }

  return Invites.handleUniversalLink(url) { invite, error in
    // ...
  }
}

Objective-C

- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url
            options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
  return [self application:app
                   openURL:url
         sourceApplication:options[UIApplicationOpenURLOptionsSourceApplicationKey]
                annotation:options[UIApplicationOpenURLOptionsAnnotationKey]];
}

- (BOOL)application:(UIApplication *)application
            openURL:(NSURL *)url
  sourceApplication:(NSString *)sourceApplication
         annotation:(id)annotation {
  if ([[GIDSignIn sharedInstance] handleURL:url
                      sourceApplication:sourceApplication
                                 annotation:annotation]) {
    return YES;
  }
  // Handle App Invite requests
  return [FIRInvites handleUniversalLink:url
                              completion:^(FIRReceivedInvite * _Nullable receivedInvite,
                                           NSError * _Nullable error) {
    // ...
  }];
}

让您的用户能够发送应用邀请

您的应用已经能够正确处理传入的邀请,现在要做的是让您的应用能够向用户的联系人发送邀请。

用户必须登录自己的 Google 帐号才能发送邀请。

要发送邀请,请先声明您是在实现 FIRInviteDelegate 协议:

Swift

class ViewController: UIViewController, InviteDelegate {
  // ...

Objective-C

@interface ViewController ()<FIRInviteDelegate>

然后将发送邀请按钮添加至您的应用。您可将此按钮添加为主菜单中的一个选项,也可将此按钮添加在可深层链接的内容旁边,这样用户就可以随邀请一起发出特定内容。请参阅 Firebase 邀请最佳做法

用户点按发送邀请按钮时会打开邀请对话框:

Swift

@IBAction func inviteTapped(_ sender: AnyObject) {
  if let invite = Invites.inviteDialog() {
    invite.setInviteDelegate(self)

    // NOTE: You must have the App Store ID set in your developer console project
    // in order for invitations to successfully be sent.

    // A message hint for the dialog. Note this manifests differently depending on the
    // received invitation type. For example, in an email invite this appears as the subject.
    invite.setMessage("Try this out!\n -\(GIDSignIn.sharedInstance().currentUser.profile.name)")
    // Title for the dialog, this is what the user sees before sending the invites.
    invite.setTitle("Invites Example")
    invite.setDeepLink("app_url")
    invite.setCallToActionText("Install!")
    invite.setCustomImage("https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png")
    invite.open()
  }
}

Objective-C

- (IBAction)inviteTapped:(id)sender {
  id<FIRInviteBuilder> inviteDialog = [FIRInvites inviteDialog];
  [inviteDialog setInviteDelegate:self];

  // NOTE: You must have the App Store ID set in your developer console project
  // in order for invitations to successfully be sent.
  NSString *message =
      [NSString stringWithFormat:@"Try this out!\n -%@",
                                 [GIDSignIn sharedInstance].currentUser.profile.name];

  // A message hint for the dialog. Note this manifests differently depending on the
  // received invitation type. For example, in an email invite this appears as the subject.
  [inviteDialog setMessage:message];

  // Title for the dialog, this is what the user sees before sending the invites.
  [inviteDialog setTitle:@"Invites Example"];
  [inviteDialog setDeepLink:@"app_url"];
  [inviteDialog setCallToActionText:@"Install!"];
  [inviteDialog setCustomImage:@"https://www.google.com/images/branding/googlelogo/2x/googlelogo_color_272x92dp.png"];
  [inviteDialog open];
}

自定义邀请

创建邀请对话框时,您必须指定邀请对话框的标题和要发送的邀请消息。您还可以自定义在邀请中发送的图片和深层链接网址(如上例所示)。

方法渠道说明
setTitle 电子邮件和短信 必需:设置邀请对话框的标题。
setMessage 电子邮件和短信 必需:设置短信邀请的默认文本和电子邮件邀请的默认主题。此消息可由发件人在邀请对话框中进行编辑。不能超过 100 个字符。
setDeepLink 电子邮件和短信 设置通过邀请发送的指向应用的链接。指定此链接以便与收件人分享特定的内容,或者在用户通过邀请打开您的应用时提供自定义体验。
setCustomImage 电子邮件 设置要包含在电子邮件邀请中的自定义图片的网址。图片必须为正方形,且大小约为 600x600 像素。图片不能大于 4000x4000 像素。
setCallToActionText 电子邮件 设置在电子邮件邀请中显示的按钮的号召性用语文本。不能超过 32 个字符。

如果您的应用有 Android 版本,并且您想发送可以在 Android 及 iOS 上打开的邀请,则应在打开邀请之前调用 setOtherPlatformsTargetApplication:targetApplication。例如:

Swift

let targetApplication = InvitesTargetApplication.init()
targetApplication.androidClientID = self.androidClientIDLabel.text
inviteBuilder.setOtherPlatformsTargetApplication(targetApplication)

Objective-C

FIRInvitesTargetApplication *targetApplication = [[FIRInvitesTargetApplication alloc] init];
targetApplication.androidClientID = self.androidClientIDLabel.text;
[inviteBuilder setOtherPlatformsTargetApplication:targetApplication];

inviteTapped 方法会打开联系人选择器对话框,用户可以从中选择要邀请的联系人。邀请是通过电子邮件或短信发送的。用户发送邀请后,您的应用会接收到对 inviteFinishedWithInvitations 方法的回调:

Swift

func inviteFinished(withInvitations invitationIds: [String], error: Error?) {
  if let error = error {
    print("Failed: " + error.localizedDescription)
  } else {
    print("\(invitationIds.count) invites sent")
  }
}

Objective-C

- (void)inviteFinishedWithInvitations:(NSArray *)invitationIds error:(NSError *)error {
  if (error) {
    NSLog(@"%@", error.localizedDescription);
  } else {
    NSLog(@"%li invites sent", invitationIds.count);
  }
}

发送以下问题的反馈:

此网页
需要帮助?请访问我们的支持页面