APP唤起跳转登录

18 9月
  • 唤起自己APP
  • 唤起其他APP
  • Universal Link
  • 第三方登录(OAuth,OpenID)
  • 集成QQ登录SDK

唤起自己APP

APP的唤起和跳转通过URL Scheme来实现,常见的web页面是http(s)://,微信是weixin://,对于APP同样如此,先要为你的APP配置Scheme。

点击项目名,进入Info tab,点击【URL Types】的【+】号,在【URL Schemes】里添加即可,例如添加为:testApp。

配置完,可以在浏览器里输入为APP配置的Scheme试一下,例如testApp://,看能不能唤起。

唤起其他APP

唤起其他APP前可以先用canOpenURL判断一下是否安装过这个APP,安装过了直接唤起,否则就跳转到Apple store推荐用户安装。

但不是所有APP都支持被检查是否安装过的,需要在项目的Info.plist中添加字段LSApplicationQueriesSchemes,可以设为Array类型,将需要检查的APP的scheme作为值添加进去,常见的微信,QQ都应该被添加进去。如果跳过这步,即Info.plist里没有将目标APP的scheme添加进去的话,canOpenURL方法将一直返回false。

最后用UIApplication提供的openURL方法唤起其他APP:

-(void) viewClick {
    NSURL *urlScheme = [NSURL URLWithString:@"testScheme://"];
    
    BOOL canOpenURL = [[UIApplication sharedApplication] canOpenURL:urlScheme];
    
    [[UIApplication sharedApplication] openURL:urlScheme options:nil completionHandler:^(BOOL success) {
        NSLog(@"");
    }];
}

Universal Link

从IOS9开始提供了Universal Link,它可以将原先自定义的scheme换成http(s)通用链接,这样也能规避原先两个APP定义了相同scheme的风险。

在浏览器的地址栏里输入Universal Link,默认是打开h5页面。在非浏览器里(例如记事本里)输入Universal Link,默认是唤起APP打开页面。

要用Universal Link,需要证书,端代码,后台一起实现。

端上,点击项目名,进入Capabilities tab,开启【associated Domains】

由于Universal Link具有唤起APP的能力,所以例如Safari,微信等常用APP是禁用Universal Link的。因为如果要访问h5页面,通常是APP内通过webview打开h5页面,这样能保证用户仍旧停留在APP内。如果使用由于Universal Link,就会唤起其他APP,用户就跳走到其他APP内了,造成用户的流失。

第三方授权登录(OAuth,OpenID)

第三方授权登录系统主要应用于跨平台,跨APP,减少用户注册成本,实现个性化推送等。国内的第三方登录系统主要就是微信,QQ,淘宝等流量较大的授权登录体系。国外的第三方登录系统主要是facebook,Twitter。

授权体系用OAuth,用于支持自己开发的APP去使用并获得第三方APP(以QQ为例)的账户信息,就不需要自己去维护一套账户体系了。授权一定要通过OAuth,不能在自己的APP里让用户输入QQ的用户名密码,这样自己的APP就能获得用户的密码等敏感信息,是无法通过QQ认证的。

通过OAuth,用户不需要手动输入用户名密码,而是唤起QQ,在QQ内部完成登录流程,这样就保证了自己的APP无法获得用户的敏感信息。

这里有个通俗的解释

账号管理用OpenID。当我们用OAuth获得了QQ的授权,并在它内部完成登录后,QQ会返回给我们一个OpenID(最早QQ授权后是直接返回QQ号,但发展到现在已经全改为返回OpenID了)。

OpenID就是对我们的QQ号等用户账号进行加密,再结合申请授权的APP名进行再次加密后生成的ID。即同一个QQ号给不同APP内授权后,返给APP的OpenID是不同的。

但OpenID不是用户信息,如果我们还需要用户信息,例如用户别名,头像等需要通过OpenID获取。

集成QQ登录SDK

腾讯开放平台里提供了SDK的下载,先下载到本地,解压后里面还有demo例子,教你怎么集成进工程。动态库集成进工程的方法其实都是一样的,也可以参照这里

集成进工程后,需要进行配置,例如配置唤起QQ时你的APP的名字,参照SDK的配置说明,在项目->Info->URL Types里配置tencentXXXX:

之后就可以参照SDK里提供的demo例子,有唤起QQ登录并跳转回源APP的示例代码,还有分享功能的示例代码,复制粘贴就行。

因为登录的场景很多,可以主动登录,也可以在评论时登录,所以建议创建一个Login单例。

发表评论

电子邮件地址不会被公开。 必填项已用*标注