#ios #swift #testing #firebase #firebase-invites
#iOS #swift #тестирование #firebase #firebase-приглашения
Вопрос:
Я использую firebase invite, чтобы приглашать друзей, используя реферальный код. И мне нужно знать, как я могу обрабатывать следующие сценарии в моем приложении iOS.
Я следовал этому руководству по реализации Firebase Invite.
Случай 1: приложение не установлено на iPhone, и пользователь устанавливает приложение через приглашение. Мне нужен реферальный код из "deeplink"
набора параметров от invitee. или приложение установлено и в данный момент не запущено, пользователь нажимает на 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)
}
Проблема в том, что я не смог найти способ протестировать какой-либо сценарий. Кто-нибудь может указать мне правильное направление.
Спасибо за помощь.
Комментарии:
1. … Вы решили проблему?