美文网首页
iOS Scheme以及微信、支付宝等第三方功能的实现

iOS Scheme以及微信、支付宝等第三方功能的实现

作者: Mr_Zander | 来源:发表于2017-11-08 23:59 被阅读358次

    理论

    在Apple的文档中,scheme在URL相关的内容中出现过,比如:

    This property contains the scheme. Any percent-encoded characters are not unescaped. For example, in the URL `http://www.example.com/index.html` , the scheme is `http` .
    The full URL is the concatenation of the scheme, a colon ( `:` ), and the value of `resourceSpecifier` .
    

    紧接着这一段,有如下说明:

    Note
    The term “protocol” is also sometimes used when talking about network-based URL schemes. However, not all URL schemes are networking protocols—data:// URLs, for example.
    

    详情点击这里。可以看出,scheme是URL中 : 之前的部分。
    在iOS/macOS/WatchOS 2中,可以利用scheme来标记APP并且通过它进行一些简单的通信。

    scheme的使用

    1. 设置scheme
      Xcode项目的info.plist中增加URL types,这是一个数组,里面的每一项都是一个字典,默认只有URL Identifier——标记URL types中的某一个item,在这里可以添加URL Schemes。比如添加一个"test"
    2. 使用scheme,添加了scheme以后,重新run项目。
      1. 可以在Safari中输入添加的scheme,然后就可以跳转到刚才的APP中了。
      2. 通过UIApplication.shared.openURL来进行APP间的跳转。如果是iOS9.0之后,需要先在info.plist中添加LSApplicationQueriesSchemes,然后把要打开的scheme添加到里面。
        LSApplicationQueriesSchemes.png

    高级用法

    1. 当APP被其他APP通过scheme调起的时候,可以通过func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool方法从url参数中获取到当前启动这个APP的完整URL,还可以通过options获取到其他APP的Bundle Identifier
    2. 在Safari中输入URL或者通过openURL来调起APP的时候,除了输入[scheme]://之外,还可以在后面带上一些内容,比如:[scheme]://aaa=1?bbb=52

    实战

    微信、支付宝、微博等应用的第三方登录、支付、分享功能,都是通过scheme来实现的。下面我们用微信的登录为例,来讲解一下scheme的使用过程。
    要使用微信的授权登录功能,首先要去微信开放平台创建一个应用,需要我们填写应用名称、icon和Bundle Identifier,之后微信会把应用的AppId和AppSecret给我们。然后根据AppID集成微信的SDK,并且在URL types里面添加一个以appid为scheme的item。到这里,微信的分享功能就集成完成了。那么,每一步都在做什么呢?


    微信授权过程.jpg

    其中,第3步中是否到服务器验证应该可以通过抓包来看到,但是我懒了,没有做。也不影响整体的流程。

    结语

    因为本人并不是微信的开发人员,以上内容可能会有出入,微信在安全方面做的应该更好。但是,大致的流程应该就是这样。其他平台、功能应该差别也不大。如有错误或者疑问可以在下面留言。

    PS: 玩王者荣耀遇到的坑货太多,弄的很郁闷,又无处发泄,我就自己做了一个《举报坑货》的APP,目前只有iOS版本的基本功能,欢迎试玩吐槽。(QQ群:280597764)

    相关文章

      网友评论

          本文标题:iOS Scheme以及微信、支付宝等第三方功能的实现

          本文链接:https://www.haomeiwen.com/subject/yocumxtx.html