紹介コードを使用して友達を招待するためにfirebaseの招待を使用しています。また、iOS アプリケーションで次のシナリオをどのように処理できるかを知る必要があります。
Firebase Invite の実装については、このガイドに従いました。
ケース 1:アプリケーションが iPhone にインストールされておらず、ユーザーが招待によってアプリをインストールする。"deeplink"
招待者からのパラメーター セットからの紹介コードが必要です。またはアプリケーションがインストールされ、現在実行されていないユーザーが電子メールから招待 URL をクリックします。
解決策 >>以下の私の知る限り、didFinishLaunchingWithOptions
メソッド内のコードはこのシナリオを処理します。
if let inviteUrl = launchOptions?[UIApplicationLaunchOptionsURLKey] as? NSURL {
//App opened from invite url
self.handleFirebaseInviteDeeplink(inviteUrl)
}
ケース 2:アプリケーションが既にインストールされており、現在iPhone で実行されており、ユーザーが電子メール内の招待リンクをクリックします。
解決策 >> AppDelegate の以下のメソッドは、私が想定するコードを処理します。
@available(iOS 9.0, *)
func application(application: UIApplication, openURL url: NSURL, options: [String : AnyObject]) -> Bool {
return self.application(application, openURL: url, sourceApplication: options[UIApplicationOpenURLOptionsSourceApplicationKey] as? String, annotation: "")
}
func application(application: UIApplication, openURL url: NSURL, sourceApplication: String?, annotation: AnyObject) -> Bool {
if let invite = FIRInvites.handleURL(url, sourceApplication:sourceApplication, annotation:annotation) as? FIRReceivedInvite {
let matchType = (invite.matchType == FIRReceivedInviteMatchType.Weak) ? "Weak" : "Strong"
print("\n------------------Invite received from: \(sourceApplication) Deeplink: \(invite.deepLink)," + "Id: \(invite.inviteId), Type: \(matchType)")
if (matchType == "Strong") {
print("\n-------------- Invite Deep Link = \(invite.deepLink)")
if !invite.deepLink.isEmpty {
let url = NSURL(string: invite.deepLink)
self.handleFirebaseInviteDeeplink(url!)
}
}
return true
}
return GIDSignIn.sharedInstance().handle(url, sourceApplication: sourceApplication, annotation: annotation)
}
問題は、シナリオをテストする方法が見つからなかったことです。誰でも私を正しい方向に向けることができますか?
助けてくれてありがとう。