前几天,技术总监用百度糯米时收到了内测邀请,然后,他在公司群里炫耀了一番,再然后,老板看上了,紧急开了个小会,要求以后也支持内测邀请。
先说一下百度糯米的内测形式吧
- 受邀用户会在应用内收到一个 Alert,如下图↓:
内测邀请-Alert.png - 当然是点击参加啦,要不然哪来的下面这个图↓:
内测邀请-Controller.png - 点击参加内测,直接打开了 TestFlight 应用(如果手机上没有 TestFlight,打开的是 App Store 下载页面),并跳转至内测版本下载页面,如下图↓:
内测邀请-TestFlight.png - 最后就是愉快的下载和体验过程了。
Perfect!看过官方文档之后,发现只能用邮件发邀请啊,而我们的产品中用户信息是没有邮件的,而且就算有,对于用户来说也很麻烦啊!那么问题来了,如何实现百度糯米的这种邀请方式呢?
我们知道,如果不是通过百度糯米那种方式,用户需要打开邮件、复制邀请码、打开 TestFlight、输入邀请码等繁琐的步骤,我们要做到邀请码对用户透明。
来了!终于来了!怎么才能做到呢?
- 第一步肯定是按照官方文档配置,这里就不再赘述了。
- 由于必须用邮件邀请的方式,因此,我们的架构师搭建了一个邮件服务,专门用于接收邀请邮件(收件地址是我们自己指定的假数据)。收到邮件后,自动点击邮件中的 “View in TestFlight” 按钮,这时候会有一个 URL,得到这个 URL 就得到了我们想要的东西,格式是这个样子的:
https://beta.itunes.apple.com/v1/invite/f2405bda0b694cba9d13a1f4c0b1e984085caa193bdd4c3d8a3fa06a34acded83c2f42e1?ct=HC3Q6RZFNN&advp=10000&platform=ios
。
URL.png
- 后台将得到的那个 URL 在应用内发给受邀用户即可(当然啦,对用户来说是透明的),然后就是
弹 Alert -> 弹 Controller -> 接受邀请并愉快地下载内测版本 -> 愉快地体验内测版本
。
UI 就不用多说了,关键是点击接受按钮时的代码,如下:
- (void)openTestFlight {
NSURL *testFlightURL = [NSURL URLWithString:@"itms-beta://"];
// 需要判断能不能打开 TestFlight
if ([[UIApplication sharedApplication] canOpenURL:testFlightURL]) {
// 这个 urlString 就是后台发送给我们的,可以直接打开 TestFlight 并跳转到内测版本的详情页面。
NSString *urlString = @"https://beta.itunes.apple.com/v1/invite/f2405bda0b694cba9d13a1f4c0b1e984085caa193bdd4c3d8a3fa06a34acded83c2f42e1?ct=HC3Q6RZFNN&advp=10000&platform=ios";
if (@available(iOS 10.0, *)) {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString] options:@{} completionHandler:^(BOOL success) {
NSLog(@"%@", @(success));
}];
} else {
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:urlString]];
}
} else {
// 手机上没有安装 TestFlight
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"https://itunes.apple.com/cn/app/testflight/id899247664"]];
}
}