MGAWSSNSManager 0.0.1

MGAWSSNSManager 0.0.1

Water 维护。



 
依赖
AWSCore~> 2.6.29
AWSSNS~> 2.6.29
AWSCognito~> 2.6.29
MGUtilsSwift>= 0
 

  • 作者:
  • MagicalWater

MGAWSSNSManager

由于目前 AWS 官方文档讲解不太完整,因此接入 simple notification service 推广服务时遇到较大的困扰,这边从头到尾将接入的方式记下来,并且封装了接入的 code 方便使用。

版本

0.0.1 - 初始项目提交

添加依赖

Cocoapods

pod 'MGAWSSNSManager', '~> {version}'
(其中 {version} 请自行替换此版本号 )

接入方式参考: iOS 使用 AWS Simple Notifications Service (SNS) 进行推送

版本

0.0.1 - 首次提交项目

前置准备

  1. 项目的推送权限/凭证,以及之后生成的p12文件,由于教程较多,不多做赘述

  2. 项目引入aws sdk,可使用cocoapods直接引入,当前文件使用的sdk版本皆为2.6.29

     pod 'AWSCore', '~> 2.6.29'
     pod 'AWSSNS', '~> 2.6.29'
     pod 'AWSCognito', '~> 2.6.29'
    

初次接入 AWS Simple Notification Service

接入aws需要以下资料

  1. applicationArn - app arn
  2. topicsArn - 订阅主题(不一定需要)
  3. region - 地区代码)
  4. identityPoolId - 身份池id

按照以下步骤可以得到上述所有资料

  1. 开启 aws 的 sns 页面,选择创建应用程序,并按照平台添加相关信息,在此步骤结束后可以得到 1. applicationArn
  2. 若不需要订阅Topic(主题),则跳过此步骤 选择创建Topic,输入并创建 主题名称,显示名称(主要用于sms,我们是接入sns可以不输入),在此步骤结束后可以得到 2. topicsArn
  3. 到 aws 控制台页面,点击服务搜索 cognito 并进入,此处为创建 身份池(IdentityPool)的地方
  4. 选择 管理身份池,选择 创建新的身份池
  5. 输入 身份池名称,并勾选 启用未经验证的身份的访问权限,然后点击 创建身份池,选择 允许
  6. 在 demo 可以看到 身份池id(IdentityPoolId),在此步骤可以得到 4. identityPoolId
  7. identityPoolId 的开头字符串(冒号之前),即是 region(地区代码),在此步骤可以得到 3. region
  8. 回到 aws 控制台页面,点击服务搜索 IAM 并进入,此为权限管理
  9. 选择 角色,会看到 Cognito_{刚才创建的身份池名称}IdentityPoolAuth_Role 和 Cognito_{刚才创建的身份池名称}IdentityPoolUnauth_Role
  10. 选择 Cognito_{刚才创建的身份池名称}IdentityPoolUnauth_Role 并进入
  11. 选择 权限,选择 附加策略,搜索并加入 AmazonSNSFullAccess
  12. 至此,所有准备工作完成,可以准备在项目里接入

使用 MGAWSSNSManager 接入 aws sns服务

  1. 添加宏定义,参考 MGMacroDefinitionXcode,
    在 Release 加入 -DRELEASE

  2. 在 AppDelegate 添加一个变量

     private var mAwsManager: MGAWSSNSManager!
    
  3. 在app启动方法里初始化,并调用初始化配置设置相关方法

     func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
         do {
             mAwsManager = try MGAWSSNSManager.init()
             try mAwsManager.configurationInit()
         } catch {
             print("初始化 awsManager 設置出現錯誤 \(error)")
         }        
         return true
     }
    
  4. MGAWSSNSManager 有两种初始化方式.

     a. 無參數 - 在專案目錄下創建名為 mgawssnsconfig.txt 文件,  
        內容之前需求的4種資料相關配置, 此文件必須加入專案的target 
     b. 有參數 - 帶入上面說的需要的資料 1. applicationArn, 2. topicsArn, 3. region, 4. identityPoolId.
    

    mgawssnsconfig 格式可参考: Config配置

  5. MGAWSSNSManager.configurationInit 此方法调用后 会自动注册推送(ios注册远程推送),
    若是网络正常,注册成功后系统会自动调用此方法 在此方法里里面调用 MGAWSSNSManager.registerToApplication 此方法,
    开始注册end point到 aws app arn 下,并在此方法里里面会自动注册topic

     //當 App 註冊推送通知成功後調用
     func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
         mAwsManager.registerToApplication(deviceToken: deviceToken)
     }
    
  6. 至此 aws 配置完成,若无误差,可以在 sns app arn 点进去之后看到注册到里面的终端点