Sailthru_SDK_iOS 3.8.1

Sailthru_SDK_iOS 3.8.1

测试已测试
语言语言 Objective-CObjective C
许可 Apache 2
发布最后发布2016年4月

David HoerlChris Sanders维护。



  • Sailthru, Inc

sailthru-mobile-ios

欢迎使用 Sailthru SDK 发行站!

在这里,您可以找到将 Sailthru 的 iOS SDK 集成到您应用程序中所需的所有内容。如果您通过点击 观察 按钮将自己添加到 观察列表,每次仓库更改时您都会收到通知。

如果您刚刚光顾这个网站,您可以在这里了解 Sailthru 如何解决您公司的营销挑战并转型其业务 (此处)

内容

  1. README(此文件) - SDK 库的高级概述
  2. SailThruSDK/README - 核心库 README。包括常见问题、版本变更和实施细节
  3. LICENSE - 本仓库中的所有内容均根据 Apache 版本 2 许可发布
  4. SailthruSDKdemoManual - 包含一个示例项目,演示如何手动将 SDK 链接到应用程序中
  5. SailthruSDK - 适用于 iOS7 或更高版本的 SDK 标头文件和静态库
  6. SailthruSDKdemoPods - 包含一个示例项目,它使用 Cocoapods——它包含 Podfile,并使用 Cocoapods 公共仓库检索和加载 SDK。

如果您之前从未听说过 CocoaPods,它是一个开源系统,用户可以通过它更好地管理多个外部库或开源代码的引入。

每个发行版都使用具有 X.Y.Z 形式的 语义版本 进行标记。

全部内容

  1. 从 GitHub 发布菜单中选择一个 发布,这将允许您检索包含此仓库中每个文件的发布 zip 存档。此存档类似于您从 Sailthru 账户经理那里收到的旧发行版。

  2. 使用 git 克隆适当的仓库版本,然后检出所需的发布(前缀为 'v' 字符)。在命令行中,这将为

    $ git clone https://github.com/sailthru/sailthru-mobile-ios.git $ git checkout tags/vX.Y.Z # X.Y.Z,或者不运行此命令以获取最新版本

支持的功能

The Sailthru iOS SDK提供以下功能:

  • 用户注册
  • 匿名用户支持
  • 获取个人资料数据
    • 应用程序的使用日期和时间
    • 访问的URL
    • 查看的标签
    • 地理位置
  • 推送推荐内容

版本验证

SDK支持一个“版本”方法,因此您可以在代码中验证是否获取了所需的分发版本。

深度链接

Sailthru提供设置键/值对的功能——包括字符串——以及警报文本。为了实现“深度链接”,您的应用需要能够将键/值转换为一系列动作,以便在用户点击通知时显示适当的视图。

例如,如果您的应用使用REST接口,并使用“product_id”来唯一标识产品,则通知可以包括一个类似于“{"product_id": "20134}"”的键/值对,同时在警报消息“您应该喜欢这个精彩的新widget!”中包含此内容。

当您的应用找到这个特定的键/值对时,它会首先检查产品“20134”是否 已在应用程序中缓存,如果是,则导航到一个显示该产品的视图,然后再显示任何UI。否则,它可以在检索该产品时弹出一个加载框,在HUD中通知用户正在检索该产品,并在收到后显示它。如果 plain product numbers 不适合您的应用程序,那么发送一个指向应用程序内可操作内容的URL。

为了避免弹出加载框,您可以使用“静默”推送通知(没有警报文本的通知)来通知应用程序可能包含在后续的警报式通知中;然后应用程序将使用后台检索来检索并存储它们。

或者,始终使用“静默”推送通知,包含警报文本作为键/值对,当您的应用程序检索到相关信息时,它可以根据用户看起来与远程通知没有区别的方式弹出一个本地通知。

常见问题

常见问题答案

问:SDK不能与iOS9Beta一起使用

苹果iOS9引入了增强的网络安全性功能。目前,当SDK尝试联系Sailthru.com时,我们网站的一个已知问题导致SSL错误。要解决这个问题,请将以下内容添加到您的info.plist中:

 <key>NSAppTransportSecurity</key>
 <dict>
   <key>NSExceptionDomains</key>
   <dict>
     <key>sailthru.com</key>
     <dict>
        <key>NSIncludesSubdomains</key>
      <true/>
       <key>NSExceptionRequiresForwardSecrecy</key>
       <false/>
     </dict>
   </dict>
 </dict>

这允许您的应用程序与sailthru.com上的任何子域名进行通信,但不会以其他方式影响应用程序的安全性。Sailthru正在积极努力更新其网站,以消除不必要的排除。

问:您测试了iOS8/iOS9吗?Swift?

是的 - SDK与iOS版本7到9正常工作,并支持Swift。

问:集成Sailthru SDK最常见的故障是什么?

  • 上传带有密码的推送证书
  • 忘记添加-ObjC链接器标志(下面第3步)
  • 在新注册消息中未传递适当的mode和/或appID

问:我如何获取添加到我的推送通知中的键/值数据?

客户端添加的JSON数据(通过UI添加的键/值对),当附加时,会被移动到一个具有json键的最高级字典中,因此它是与苹果提供的aps字典的平级项。修改后的字典随后通过管理器的 *didReceiveRemoteNotification:isBooting: *方法返回。

问:SDK是否硬链接到系统框架,如果不是,我的应用程序必须添加哪些框架?

可选地链接FoundationSystemConfiguration框架;因此,如果客户端应用程序尚未这样做,则必须链接到SystemConfiguration

问:SDK是否将类别添加到任何标准Foundation类中?

不,SDK不会将其自己的类之外的其他任何类的类别添加。

问:SDK是否污染了我的应用命名空间以包含除ST前缀的类外其他类?

没有。

问:您使用AFNetworking或其他常用开源软件吗?

SDK中的每一行代码都在我们的控制之下——虽然我们使用苹果公司的Reachability源代码,但Reachability类现在被前缀为ST修改。

问:SDK使用iOS文件系统吗?

是的,它主要使用一个加密文件,保存在Application Support文件夹中(从NSSearchPathForDirectoriesInDomains获取的路径),但可能还会创建第二个临时文件。每个文件都标记有不要备份属性

问:应用是否使用HTTP

不是的,它只使用HTTPS

问:.a文件是否包含符号?

是的,应用包含所有符号(以便在远程 chance 尝试过程中更好地引导异常分析)。如果您剥离了应用或创建了单独的符号文件,库符号由Xcode以相同的方式进行管理。

问:库的代码大小是多少?

对此没有简单的答案——库(.a文件)具有所有有效设备和模拟器架构的架构,并包含完整的符号表以辅助异常解决。StackOverflow上的问答显示,您可以使用一种技术来确定一个架构的剥离大小。对于3.3.0库,arm64的大小约为125,000字节(TEXT+DATA)。

问:当Sailthru废弃某个功能时,它意味着什么?

该功能可能会在下一个版本中消失。按照警告中建议的方式切换。

注释

  • 对于那些既有网站又有iOS应用的您来说,苹果公司在iOS8中引入了一个新概念,称为Continuity。该概念的其中一个方面可以通过利用Safari凭据来方便地实现应用登录。Sailthru已经测试了这项技术,我们在我们的技术博客上展示了如何实现。

  • Cluster的联合创始人兼设计师Brenden Mulligan在TechCrunch上记录了他的公司用来提高允许推送通知等的用户百分比的策略。值得一读!

版权 (c) 2014-2015 Sailthru, Inc