Buka konsol

Mengirim dan Menerima Firebase Invites dari Aplikasi iOS

Prasyarat

Firebase Invites memerlukan iOS 8 atau yang lebih baru. Anda dapat menargetkan iOS 7 di aplikasi, tetapi semua panggilan Firebase Invites SDK tidak akan beroperasi jika aplikasi tidak berjalan di iOS 8 atau yang lebih baru.

Sebelum Anda memulai

  1. Jika Anda belum menghubungkan aplikasi ke project Firebase, lakukanlah dari Firebase console.
  2. Jika Anda belum mengaktifkan Firebase Dynamic Links, lakukanlah dari Firebase console dengan membuka bagian Dynamic Links, lalu menyetujui persyaratan layanan jika diminta. Karena Firebase Invites dibangun pada Firebase Dynamic Links, Anda harus mengaktifkan Firebase Dynamic Links agar dapat menggunakan Firebase Invites.
  3. Tambahkan Firebase ke project iOS Anda. Sertakan Pod berikut di Podfile Anda:
    pod 'Firebase/Core'
  4. pod 'Firebase/Invites'
  5. Impor modul Firebase di UIApplicationDelegate Anda:

    Swift

    import Firebase

    Objective-C

    @import Firebase;
  6. Konfigurasikan instance bersama FirebaseApp, biasanya di metode application:didFinishLaunchingWithOptions: pada aplikasi Anda:

    Swift

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

    Objective-C

    // Use Firebase library to configure APIs
    [FIRApp configure];
  7. Di Xcode, edit Info.plist project Anda, lalu tambahkan properti dengan kunci NSContactsUsageDescription ("Privasi - Deskripsi Penggunaan Kontak") dan nilai yang menjelaskan penggunaan data kontak oleh aplikasi Anda. Misalnya: "MyRecipeApp menggunakan kontak Anda agar mudah berbagi resep dengan teman-teman".
  8. Terapkan Login dengan Google di aplikasi Anda. Pengguna harus login dengan Akun Google agar dapat mengirimkan undangan.

Menangani undangan aplikasi yang masuk

Setelah mengonfigurasi aplikasi, Anda harus mengaktifkan aplikasi agar dapat menangani undangan aplikasi yang masuk.

Saat pengguna memilih undangan aplikasi yang masuk di perangkat iOS-nya, ia dapat memilih untuk menginstal aplikasi Anda dari halaman App Store, jika belum melakukannya. Saat pengguna membuka aplikasi Anda untuk pertama kalinya, aplikasi tersebut harus dapat memberikan pengalaman orientasi yang dipersonalisasi untuk memperbesar kemungkinan ia menjadi pengguna aktif aplikasi Anda dalam jangka panjang. Untuk membantu Anda melakukan hal ini, Invites SDK menyediakan deep link dan ID undangan yang dihubungkan dengan undangan aplikasi yang diterima oleh pengguna.

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) {
    // ...
  }];
}

Memperbolehkan pengguna Anda untuk mengirimkan undangan aplikasi

Setelah aplikasi Anda siap menangani undangan yang masuk dengan baik, saatnya untuk mengaktifkan aplikasi Anda agar dapat mengirimkan undangan ke kontak pengguna.

Sebelum dapat mengirimkan undangan, pengguna harus login dengan Akun Google.

Untuk mengirimkan undangan, nyatakan terlebih dahulu bahwa Anda menerapkan protokol FIRInviteDelegate:

Swift

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

Objective-C

@interface ViewController ()<FIRInviteDelegate>

Selanjutnya, tambahkan tombol Kirim Undangan ke aplikasi Anda. Anda dapat menambahkan tombol ini sebagai opsi di menu utama, atau menambahkannya di samping konten yang dapat disertai deep link, sehingga pengguna dapat mengirimkan konten tertentu bersama undangan tersebut. Lihat praktik terbaik Firebase Invites.

Saat pengguna menge-tap tombol Kirim Undangan, buka dialog undangan:

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];
}

Menyesuaikan undangan

Saat membuat dialog undangan, Anda harus menetapkan judul dialog undangan dan pesan undangan yang akan dikirimkan. Anda juga dapat menyesuaikan gambar dan URL deep link yang dikirimkan dalam undangan tersebut, seperti dalam contoh di atas.

MetodeSaluranDeskripsi
setTitle Email & SMS Wajib: Menentukan judul dialog undangan.
setMessage Email & SMS Wajib: Menentukan teks default undangan SMS dan subjek default undangan email. Pesan ini dapat diedit oleh pengirim dalam dialog undangan. Tidak boleh melebihi 100 karakter.
setDeepLink Email & SMS Menyetel link ke dalam aplikasi Anda yang dikirim bersama undangan. Tentukan hal ini untuk berbagi konten tertentu dengan penerima, atau untuk menampilkan pengalaman khusus saat pengguna membuka aplikasi Anda dari undangan.
setCustomImage Email Menyetel URL gambar kustom untuk disertakan dalam undangan email. Gambar harus berbentuk persegi dan berukuran sekitar 600x600 piksel. Ukuran gambar tidak boleh lebih besar dari 4000x4000 piksel.
setCallToActionText Email Menetapkan teks pesan ajakan pada tombol yang dirender dalam undangan email. Tidak boleh melebihi 32 karakter.

Jika aplikasi Anda memiliki versi Android dan Anda ingin mengirim undangan yang dapat dibuka di iOS serta Android, panggil setOtherPlatformsTargetApplication:targetApplication sebelum membuka undangan. Misalnya:

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];

Selanjutnya, metode inviteTapped akan membuka dialog pemilih kontak yang digunakan pengguna untuk memilih kontak yang akan diundang. Undangan akan dikirimkan melalui email atau SMS. Setelah pengguna mengirimkan undangan, aplikasi Anda akan menerima callback ke metode 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);
  }
}