GithubHelp home page GithubHelp logo

gtapp-ios-oc's Introduction

gtapp-ios-oc

为了方便第三方开发者快速集成 极验验证 SDK,我们提供了以下联系方式,协助开发者进行集成。

QQ群: 487868018 (iOS) 请注明验证信息

关于SDK的Bug反馈、用户体验、以及好的建议可以在Github或QQ群提交给我们,我们会讨论合理性后会尽快跟进。

img/demo_0.png

img/demo_1.png

img/demo_2.png

验证主要分为三个部分:
  1. 从网站主服务器 获取所需的验证数据 (id,challenge,success)
  2. 核心验证过程
  3. 根据验证回调数据在网站主服务器进行二次验证
iOS SDK 主要完成过程:
  1. 给出默认的failback机制 获取所需的验证数据 (网站主也可以根据自己的服务器配置以及需求完成此过程,但必须保持通讯流程完整)
  2. 完成核心验证过程
demo 演示完成的部分
  1. 二次验证不是由sdk完成,而是网站主自己根据demo的逻辑以及网站主的服务器配置来完成这一块的部署
  1. ios 7.0 +
  2. xcode 6.0 +
  3. arc
  4. webkit.framework
  1. 需要配合极验的服务端sdk一同使用. [require geetest server sdk]
  2. 请认真查阅开发者文档,支持iOS7以上. [please read developer doc, and support iOS7+]
  3. 在gtapp-ios-oc项目下版本号为2.15.8.*之后的版本,现在持续更新和维护中。[The latest one has the failback feature (version 2.15.8.* +). We had stopped to develop the old version. So we recommend you to use the failback version.]
  4. failback版本在项目路径的‘gt-iOS-sdk-failback -demo’下。[the failback version in the file 'gt-iOS-sdk-failback -demo']
  5. 2.16.3.10.1 版本之后需要导入webkit.framework, 添加了对wkwebview的支持。
  6. 详细开发文档查看根目录下的开发者文档。[get more information in demo files]
  7. 常见问题查看根目录下的q&a文件。
  1. 2.15.12.30.1 对svg支持,动态获取验证高度,适配新ui
  2. 2.16.1.20.1 添加对https、localization支持,增加对状态指示器自定义
  3. 2.16.3.10.1 优化图层结构,优化性能表现,iOS8以上基于wkwebview,表现更稳定
  4. 2.16.6.8.1 完善功能,修复bug

img/unit_test_0.png

  1. 2.15. 5.x : no failback version
  2. 2.15. 8.x - current : failback version
  1. GTFramework 极验验证iOS版本的SDK,生成一个基于i386、x86_64、armv7、 armv7s、arm64的framework,支持iOS7.0+。开发使用的Xcode版本为Xcode 7.0。[build on i386、x86_64、armv7、 armv7s、arm64, and support iOS7+]
  2. gt-iOS-sdk-demo 调用sdk的演示app程序。 [use demo to know more about GTFramework]
  3. 演示项目提供了完整的一次验证,并将客户端验证结果向示例的客户服务器上发起二次验证的完整通讯过程。[in the demo, we provide a networking flow completely]
  4. 不依赖任何第三方库,demo里的代码可根据网站主项目需要自行修改。[you can change what you want in the demo]
  5. 如果使用failback版本的请下看项目路径下‘gt-iOS-sdk-failback -demo’ [the failback version in the file 'gt-iOS-sdk-failback -demo']

自建项目引用 假设用户自建项目名称为:TestGT

  1. 在极验官方主页www.geetest.com注册账号并申请相应的应用公钥,id:{{id}}。[get geetest id/key from geetest.com ]
  2. 将gt-iOS-sdk下的GTFramework项目生成的静态库 GTFramework.framework 和 webkit.framework 引入到项目中 [import GTFramework to your preject]
  3. 将GTFramework.framework项目以Static Library的方式进行引用。将所需的GTFramework.framework拷贝到工程所在文件夹下。在 TARGETS->Build Phases-> Link Binary With Libaries中点击“+”按钮,在弹出的窗口中点击“Add Other”按钮,选择GTFramework.framework文件添加到工程中。[add GTframework to 'Link Binary With Libaries']
  4. 在项目标有TODO注释的地方写入网站主自已的处理代码。[add you handle method where signed 'TODO']

暂时只提供纯Objective-C的Framework

导入外部框架,无论框架是纯Objective-C,纯Swift还是混合语言,import外部框架的流程是一样的。当你要导入外部框架的时,确保Build >Packaging >Defines Modele 设置为Yes.

用下面的语法将框架导入到相应的target的Swift文件中:

import FrameworkName

用下面的语法将框架导入到相应target的 Objective-C .m 文件中:

@import FrameworkName;

更多请查阅官方文档 Using Swift with Cocoa and Objective-C (Swift 2)

iOS9适配详细可跳转至 iOS9适配tips

由于 iOS 9 改用更安全的https,为了能够在iOS9中正常使用http,请在"Info.plist"中进行如下配置,否则影响网络的使用。

暂时的解决方案:

方案A:
强制将NSAllowsArbitraryLoads属性设置为YES,并添加到你应用的plist中
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
方案B:
建立白名单并添加到你的app的plsit中
<key>NSAppTransportSecurity</key>
<dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>geetest.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSThirdPartyExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
            <false/>
        </dict>
    </dict>
</dict>
方案C:
依赖TLS建立白名单的另一种配置方法
<key>NSAppTransportSecurity</key>
<dict>
    <dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    </dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>geetest.com</key>
        <dict>
            <key>NSIncludesSubdomains</key>
            <true/>
            <key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
            <true/>
            <key>NSTemporaryExceptionMinimumTLSVersion</key>
            <string>TLSv1.1</string>
        </dict>
    </dict>
</dict>

苹果在iOS9的SDK中添加了对应用的瘦身的支持,其中就包括bitcode。你可以以如下方法解决bitcode适配问题

我们目前也在编译生成了支持bitcode版本的sdk。该版本的sdk请见failback demo目录,将文件"GTFramework_bitcode"去掉后缀后的替换原GTFramework文件。

或者:

通过设置编译标志ENABLE_BITCODE = NO,亦或者修改工程的构建设置(build settings)可关闭bitcode功能

Lots of warnings when building with Xcode 7 with 3rd party libraries

在Build Settings 作如下配置

Precompile Prefix (GCC_PRECOMPILE_PREFIX_HEADER) = NO
Debug Information Format (DEBUG_INFORMATION_FORMAT) = DWARF with dSYM
Enabled Modules (C and Objective-C) (CLANG_ENABLE_MODULES) = NO

如果不可行尝试(推荐下面的解决方案)

Enabled Clang Module Debugging = NO

网络层面使用NSURLConnection, 高层次api, 支持IPv6

Block:
       ^(NSString *code, NSDictionary *result, NSString *message) {}

返回值:

1.code
成功或者失败的值(1:成功/其他:失败) status code, (1: success/2: fail)
2.message
成功或者失败的信息(success/fail) description about your result
3.result
详细的返回信息,用于向客户服务器提交之后的SDK二次验证信息 if you want to finish Secondery-Validate ,you should send those result information to your server.
{
 "geetest_challenge": "5a8c21e206f5f7ba4fa630acf269d0ec4z",
 "geetest_validate": "f0f541006215ac784859e29ec23d5b97",
 "geetest_seccode": "f0f541006215ac784859e29ec23d5b97|jordan"
 }

gtapp-ios-oc's People

Contributors

lsyyj avatar nikoxu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

gtapp-ios-oc's Issues

webView:decidePolicyForNavigationAction:decisionHandler

Completion handler passed to -[GTView webView:decidePolicyForNavigationAction:decisionHandler:] was called more than once
(
0 CoreFoundation 0x000000018402ada4 + 252,
1 libobjc.A.dylib 0x00000001831e45ec objc_exception_throw + 56,
2 CoreFoundation 0x000000018402ac6c + 0,
3 WebKit 0x00000001939993f0 + 216,
4 WebKit 0x00000001939dbcb4 + 44,
5 JuMei 0x0000000107aa377c -[GTView webView:decidePolicyForNavigationAction:decisionHandler:] + 632,
6 WebKit 0x00000001939d9044 + 716,
7 WebKit 0x0000000193b971b8 + 1192,
8 WebKit 0x0000000193bc7b74 + 116,
9 WebKit 0x0000000193bbd64c + 280,
10 WebKit 0x00000001939d6654 + 128,
11 WebKit 0x0000000193c14ae8 + 36,
12 WebKit 0x000000019399c0bc + 196,
13 WebKit 0x00000001939998d4 + 140,
14 WebKit 0x000000019399c2f4 + 232,
15 JavaScriptCore 0x000000018b62fe98 + 268,
16 JavaScriptCore 0x000000018b630158 + 36,
17 CoreFoundation 0x0000000183fd3404 + 24,
18 CoreFoundation 0x0000000183fd2c2c + 276,
19 CoreFoundation 0x0000000183fd079c + 1204,
20 CoreFoundation 0x0000000183ef0da8 CFRunLoopRunSpecific + 552,
21 GraphicsServices 0x0000000185ed3020 GSEventRunModal + 100,
22 UIKit 0x000000018ded178c UIApplicationMain + 236,
23 JuMei 0x00000001044b3100 main + 176,
24 libdyld.dylib 0x0000000183981fc0 + 4
)

use_frameworks error

If use_frameworks is enabled, when run pod install, it will report error like this:

[!] The '**'  target has transitive dependencies that include statically linked binaries: (/**/ios/Pods/GeeTestSDK/GTFramework.framework)

suggest you to add s.static_framework = true to the file GeeTestSDK-OC.podspec to avoid this error.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.