Tag: 推送通知

使用JSON Web令牌(JWT)构建有效的推送通知

Apple推送通知服务(APN)是Apple设备上所有远程通知的主要亮点。 使用APN,开发人员可以利用该服务来建立参与度并将信息传递给iOS平台上的用户,包括tvOS,macOS和watchOS等其他Apple设备。 使用Apple先前对推送通知服务的更新,您可以使用身份验证令牌安全地连接到APN,以通过HTTP / 2 API发送推送,从而免除了维护有效证书和其他相关任务的压力。 该协议使开发人员轻松构建强大的推送通知。 苹果公司新的基于APN的基于令牌的通信还提供了无状态且快速的通信,这比基于证书的通信要快,因为APN不必验证您的证书或任何其他信息。 此外,您不必总是为每个通知生成新的令牌。 此外,您可以将单个令牌与多个服务器一起使用,以向每个应用程序发送通知。 如果您是iOS开发人员,并且希望与APN实现基于令牌的通信,那么可以像以下几个快速步骤来熟练掌握JWT! 有3个步骤可实现此目的: 从会员中心生成签名密钥。 生成JSON身份验证令牌。 发送推送通知。 从会员中心生成签名密钥 您可以将该密钥用于多个应用程序,并且可以在生产和开发服务器上使用。 要创建签名密钥,请登录会员中心,然后单击“ Keys部分中的“ All ”。 单击右上角的+按钮,为您的密钥命名,然后在“密钥服务”部分中选择APN。 单击继续,将生成您的密钥。 记下Key ID然后从下载选项中下载签名密钥(扩展名为.p8)。 将这两条信息都存储在安全的地方。 您将需要它来生成用于身份验证的JSON令牌。 生成JSON身份验证令牌 APN需要JSON Web令牌才能遵循以下格式: 标头 { “ alg”:“ ES256”, “孩子”:“ ABC123DEFG” } 要求 { “ iss”:“ DEF123GHIJ”, “ iat”:1437179036 } alg (Algorithm):加密算法,当前APN仅支持ES256 kid (密钥ID):我们在上一步中生成的10位数字的密钥ID。 iss (发行人):这是一个10位数字的团队ID,可帮助您开发应用程序。 iat (Issed At):生成令牌时从UTC的纪元开始的秒数。 […]

让我们快速了解分组通知-iOS 12

iOS 12具有分组通知! 使用threadIdentifier创建通知内容以创建该通知的组。 分组将属于该应用程序或来自某个应用程序的特定主题。 //使用线程标识符创建组 让内容= UNMutableNotificationContent() content.title =“通知组” content.body =“ Ashish Kakkad的教程” content.threadIdentifier =“ notify-team-ios” 通知有效载荷将如下所示 { “ aps”:{ “警告”:{ “ title”:“通知组”, “ body”:“ Ashish Kakkad的教程” } “ thread-id”:“ notify-team-ios” } } 为组的特定目的给线程标识符赋予有意义的名称。 简单通知组摘要 让summaryFormat =“%u更多消息” 返回UNNotificationCategory(标识符:“类别标识符”,操作:[],intentIdentifiers:[],hiddenPreviewsBodyPlaceholder:nil,categorySummaryFormat:summaryFormat,选项:[]) 隐藏的预览摘要自定义 让summaryFormat =“%u更多消息” let hiddenPreviewsPlaceholder =“%u条消息” 返回UNNotificationCategory(标识符:“类别标识符”,操作:[],intentIdentifiers:[],hiddenPreviewsBodyPlaceholder:hiddenPreviewsPlaceholder,categorySummaryFormat:summaryFormat,选项:[]) 带有参数的通知组摘要 让summaryFormat =“%u来自%@的更多消息” 返回UNNotificationCategory(标识符:“组消息”,操作:[],intentIdentifiers:[],hiddenPreviewsBodyPlaceholder:nil,categorySummaryFormat:summaryFormat,选项:[]) 通知组摘要参数 让内容= UNMutableNotificationContent() content.body =“…” content.threadIdentifier […]

带附件的iOS 10通知以及更多其他内容

这是关于iOS 10通知的两部分文章的第二部分。 今天,我们将详细介绍如何实现通知附件的技术细节以及iOS 10中引入的许多更复杂的功能。 首先,Apple已将通知处理移至名为UserNotifications的新框架。 请参阅https://medium.com/@prianka.kariat/ios-10-notifications-an-overview-8e88b7f3436b#.1yk3ij8j4了解iOS 10通知中的新功能。 本文将分为以下几部分 权限处理 带有附件和通知处理的本地通知 带有附件的远程通知 自定义通知的UI 1.权限处理 为了使您的应用能够将通知发送到设备,它应该向用户询问权限。 可以使用UserNotifications框架按以下说明进行操作 。 不同的通知可能具有不同的操作。 如果您可以从应用程序发送短信和电子邮件会话,则在收到每种消息时必须响应的动作将有所不同。 因此,我们有通知类别。 稍后您将了解到,当您想为不同的通知实现自定义界面时,这些类别也很重要。 UNUserNotificationCenterDelegate 如果用户在取消通知或单击操作按钮后打开应用程序,则您的应用程序应实现此委托以在前台接收通知并进行任何处理。 我有一个可以删除通知的按钮。 我将仅在用户使用“发送”按钮发送通知后启用该按钮。 我们有一个文本字段,可让用户输入通知的正文。 我们仅发送带有单个标识符的通知。 因此,当收到新通知时,它将更新现有通知,而不会使通知中心混乱。 我们为通知触发器指定了10秒的间隔。 如果用户选择在发送通知之前选择发送带有修改主体的通知,则通知中心安排的旧通知将被更新。 删除通知 您可以删除传递的通知以及应用程序发送的未决通知。 附件应该很小! 使附件保持最小尺寸,尤其是在下载内容时。 短时间间隔后,操作系统将终止服务扩展。 因此,您必须确保在分配的时间之前完成处理。 我们将向用户显示食谱供稿,以作为通知。 此通知将包括以下部分。 食谱标题 字幕 -谁张贴了食谱 正文 -食谱的简短说明 视频附件 –显示配方过程 因此,当前的工作是将视频附加到服务扩展中的通知上。 您的服务扩展名有两个文件Info.plist和NotificationService.swift 您将在NotificationService中获得一些样板代码。 不过,让我们编写用于下载视频和设置通知内容的代码。 在此之前,只需确保要发送的有效负载如下。 4.自定义通知的UI 上面交付给用户的UI是带有视频附件的通知的默认UI。 iOS 10添加了自定义此UI的功能。 现在,自定义通知UI时有些事情看起来是不可能的。 动画。 […]

反应本机推送通知

使用Amazon Pinpoint,AWS Amplify和AWS Mobile Hub将推送通知添加到React Native iOS项目中。 AWS最近增加了将推送通知发送到AWS Amplify库的功能,从而可以与适用于iOS和Android平台的Amazon Pinpoint推送通知服务集成。 这增加了Amplify支持的现有服务,该服务现在还包括使用Amazon Cognito进行授权,使用Amazon S3进行存储以及使用Amazon Pinpoint进行分析。 在本文中,我们将逐步介绍如何向React Native iOS项目添加推送通知。 我们将不介绍Android,它将在另一篇文章中介绍,因为这两个平台是如此不同,并且具有完全不同的配置和工作流程。 要查看完整的端到端实施,包括配置Apple证书和配置文件,请参阅以下视频。 现在,您会注意到项目中添加了几个新文件和文件夹: ./aws-exports.js – ./awsmobilejs和./awsmobilejs 。 在通过CLI创建Mobile Hub项目之后,应在终端中向您介绍./awsmobilejs的内容: ./aws-exports.js包含与AWS Amplify支持的任何AWS服务进行交互所需的配置。 我们在调用Amplify.configure(config)时使用此文件来配置应用程序,其中config是此配置。 接下来,我们需要在AWS Amplify React Native项目中链接本机依赖关系: 反应本机链接aws放大反应本机 苹果开发人员配置 接下来,我们需要在开发人员控制台中设置iOS推送通知,创建配置文件,并从Keychain Access生成并下载.p12文件。 执行此操作的步骤位于此处。 如果您以前从未做过,那么这是一个复杂的过程,我会在这里指出您之前引用的视频,并从4:42到12:30观看整个过程。 将.p12文件添加到Amazon Pinpoint 现在我们已经配置了Apple证书,我们需要通过Mobile Hub将.p12文件上传到Amazon Pinpoint。 让我们从控制台在Mobile Hub中打开项目: awsmobile控制台 这将在AWS控制台中打开当前的AWS Mobile Hub项目。 向下滚动并单击Messaging&Analytics ,然后选择Messaging : 现在,选择Mobile Push […]

推送通知基础(2之2)

我完成了上一篇文章,总结了如何配置您的应用程序以接收推送通知,但是我没有讨论一旦这些通知到达时您可以怎么做。 所以我们开始。 除非您可以响应这些推送通知,否则向您的设备发送推送通知并没有真正的帮助。 这就是我今天将向您介绍的内容。 具体来说,以下内容: 响应用户对推送通知的操作 在前台处理推送通知 在后台处理推送通知 1和2均由UNUserNotificationCenter处理,其中3由UIApplicationDelegate严格处理。 响应用户对推送通知的操作 UNUserNotificationCenter是一个非常强大的API,它使您可以计划本地通知,配置推送通知动作以及与用户对推送通知的动作进行交互。 iOS在通知方面已经走了很长一段路,而这仅仅是帮助开发人员构建美好体验的另一层。 我们将只专注于响应用户操作。 当推送通知发送到设备时,会显示类似的内容 用户可以选择向右滑动并打开推送通知,或向左滑动并查看一些选项。 无论用户做什么,应用程序都将完全相同地处理它。 UNUserNotificationCenter具有使用方法userNotificationCenter(didReceive: withCompletionHandler:)的协议UNUserNotificationCenterDelegate 。 这是进入应用程序的入口点 。 启用此功能后,我们现在可以在后台响应远程通知。 将通知有效内容中的content-available标志设置为1可使您的应用程序知道有信息要处理,它将触发必要的应用程序委托回调方法。 func application(_ application:UIApplication,didReceiveRemoteNotification userInfo:[AnyHashable:Any],fetchCompletionHandlercompleteHandler:@转义(UIBackgroundFetchResult)->无效) 与我们通过UNUserNotificationCenterDelegate获得的UNNotificationResponse对象不同,我们在UNUserNotificationCenterDelegate获得准系统有效负载[AnyHashable: Any] 。 用户尚未与推送通知进行交互,因此动作标识符将是无关紧要的。 但是,我们得到了completionHandler 。 再次使用此完成处理程序来让系统知道任何处理已完成。 这对系统很重要,因此可以 再次终止应用程序 将应用程序保留在后台,但减少分配给该应用程序的资源量 yada yada yada有助于延长电池寿命,保持系统效率。 此完成处理程序和用户通知完成处理程序之间的区别在于其签名。 这里的完成处理程序采用UIBackgroundFetchResult ,它可以是noData , newData或failed 。 这很清楚,该处理应该是进行任何更新的快速网络调用 ,因为该应用程序没有太多的活动时间(实际上,我相信这是30秒左右)。 后台远程通知的主要动机是,当用户进入“多任务”模式时,他们可以查看每个应用程序的最新状态。 老实说,这提供了相当不错的用户体验;)。 后台远程通知处理不应与后台获取混淆,后台获取是后台工作的一个完全不同的方面。 我将在以后的文章中专门介绍后台获取。 希望您能读一读! 更多款待即将推出!

iOS中的轮播通知

作为Dolap.com,我们始终致力于提供最佳的移动用户体验。 上个月,我们试图找到一种方法来向用户显示项目列表,而不会强迫他们打开应用程序。 我们最终决定在iOS 10中引入富用户通知的自定义实现。 方法如下: 首先,如果要创建自定义通知,则应使用“通知内容扩展”。 我创建了一个名为carousel的扩展,然后将显示一个弹出窗口。 激活它以创建扩展方案。 之后,您将看到您的新方案。 要进行调试,您应该选择轮播方案⚠️ 在左侧,您将有一个名为carousel的新文件,其中包含ViewController,storyboard和info.plist 您的ViewController直接从UNNotificationContentExtension协议扩展。 它符合didReceive(_ notification:UNNotification)方法 通知扩展后,didReceive方法将被调用。 如果您想显示一些数据,那就是地方place 让我们结帐info.plist🤔 我们对这里的主要兴趣是类别标识符。 在发送推送通知时,应正确设置通知内容的类别标识符。 否则,由于标识符错误,您的自定义通知将无法正常工作 ContentSizeRatio的默认值为1。您可以根据需要更改它,但是它有责任使UI适应通知大小。 此外; 如果将UNNotificationExtensionDefaultContentHidden添加到NSExtensionAttributes并将其设置为YES,则将隐藏通知内容,仅显示您的UI 注意:系统会阻止在屏幕上向视图控制器传递触摸事件。 不要在界面中安装手势识别器或依赖触摸事件。 因此,☝️i添加了下一个和上一个动作按钮。 让我们谈谈他们。 在UNNotificationContentExtension协议中有一种处理操作的可选方法 注册自定义通知时,还应该创建操作并确定其actionIdentifiers。 因为如果您想处理每个操作单击,则将需要该标识符。 我们遵循didReceive:completionHandler方法并处理动作。 请注意完成,因为它采用responseOption作为参数。 您具有关闭,dismissAndForwardAction和doNotDismiss选项。 因此,如果您不想打开应用程序,则应使用doNotDismiss选项👊 总而言之,我们学到了; 如何创建通知内容扩展 如何使用指定的类别标识符进行注册 如何添加动作并处理其点击 感谢您阅读🤓寻找源代码? 🚀

iOS Push与Amazon的AWS简单通知服务(SNS)和Swift轻松实现

推送是任何移动应用程序中不可思议且必不可少的功能。 亚马逊的AWS通过其惊人的简单通知服务(SNS)为移动提供了推送服务。 我个人发现使用Swift和SNS在iOS上实现推送有点困难,主要是因为没有关于该主题的简化的分步文档。 本教程就是这样:一个简单的分步教程,介绍如何使用Swift和SNS在iOS上实现推送通知。 我们将您要在下面学习的内容纳入了此处列出的大多数产品中。 本教程旨在握住您的每一个步骤 。 我们将创建一个Swift / SNS push应用程序。 首先创建一个单页应用程序:打开XCode并创建一个单页应用程序。 您可以随意调用该应用程序,但要确保名称是唯一的。 创建p12证书:为新应用创建应用ID,推送启用的证书和p12文件。 这是一个很好的教程,请执行以下操作:单击此处。 a)创建一个新的平台应用程序:登录到AWS并转到SNS仪表板。 单击“创建平台应用程序”链接。 b)输入平台应用程序详细信息:输入您的应用程序名称(您的唯一名称)。 推送通知平台应为“ Apple开发”。 4. 完成创建平台应用程序:在下拉菜单中选择“ iOS推送证书”作为推送证书类型。 单击“选择文件”按钮,然后选择您在步骤2中创建的p12证书文件。单击“从文件加载凭据”按钮,如果您为证书创建了一个,则输入密码。 如果没有密码,请将其保留为空白。 完成所有操作后,单击“创建平台应用程序”按钮。 复制应用程序ARN以在XCode应用程序中进一步使用 → 5. 将SNS ARN插入您的应用程序委托:打开AppDelegate.swift文件,并将SNS平台应用程序ARN插入为应用程序委托的第一个变量。 自然,您的应用程序ARN将与下面的字符串不同。 /// SNS平台应用程序ARN 让SNSPlatformApplicationArn =“ arn:aws:sns:us-east-1:203525439813:app / APNS_SANDBOX / SpreebieSNSExample” 6. 下载适用于iOS的AWS开发工具包:转到此处的适用于iOS的AWS开发工具包页面,然后下载SDK或单击此处下载。 7. a)解压缩SDK文件并将其拖放到您的项目中:解压缩下载的SDK,并将AWSCore.framework,AWSCognito.framework和AWSSNS.framework文件添加到您的项目中。 b)嵌入框架:通过转到YourProject-> Targets-> General-> Embedded Binaries,嵌入刚添加到项目中的框架。 添加AWSCore.framework,AWSCognito.framework和AWSSNS.framework。 8.将AWSSNS导入到您的应用程序委托中:将AWSSNS框架导入到您的AppDelegate.swift中 。 导入AWSSNS 9. […]

在iOS平台上具有Firebase Cloud Messaging(FCM)和Pusher的丰富推送通知

A.基本原理: 苹果推送通知服务(APN)是iOS平台上远程推送通知功能的核心。 借助APN,您可以 与丰富的内容(如图像,视频,gif等)一起显示消息 播放不同音调的声音 在打开或不打开应用程序的情况下提供操作。 您可以在通知有效负载中附加一个深层链接,以打开应用程序并执行某些操作。 设置应用程序的批处理图标。 等等… 怎么运行的: 设置基本配置 以接收推送通知的步骤: 在Xcode→目标→功能中启用推送通知 获取APNs证书,该证书对于向APNs 验证 提供程序是必不可少的 请求 用户授予接收通知的权限 ,如果获得许可,则向APN发送请求以注册设备 4.如果设备已成功注册到APN,它将返回一个唯一的设备令牌 ,该令牌有助于通过APN识别设备。 5.通过某些提供程序 (例如FCM / Pusher /您自己的后端)发送通知

在React Native中处理来自OneSignal的远程推送通知

两周前,我发表了一篇文章,介绍了通过OneSignal为React Native(iOS和Android)设置推送通知所必须采取的每个步骤。 但是帖子在交付时就停止了-如果您想在用户通过推送通知打开应用程序时为他们做些什么呢? 如果他们在应用程序中打开了推送通知怎么办? 这就是我今天打算讲的内容。 在继续本文之前,请确保已为您的平台设置了OneSignal。 访问通知 在我们实际上无法对通知执行任何操作之前,我们需要访问该通知的内容。 使用react-native-onesignal时 我们将利用已打开的事件,我们可以使用OneSignal.addEventListener进行监听 。 确保您也删除了监听器! 现在,我们对数据的外观有了一个了解。 让我们写一些代码。 我们将使用react-native-root-toast 在应用中显示通知。 这是计划: 不活跃的经历 那么,如果用户在我们的应用程序处于后台时单击通知,该怎么办? 我将继续进行,好像我们使用的是react-native-router-flux (我有一个有关如何使用它的教程) 。 因此,回顾我们的规范,我们知道在这种情况下,我们不会向用户显示消息(他们已经从通知中看到了该消息),但是我们确实希望将它们带到适当的房间。 您会看到,访问我们从推送通知传递的自定义数据非常简单,从而为用户提供自定义体验并节省时间。

处理iOS推送通知:不太明显的一面

在Fenrir,我们的许多开发人员都有维护已存在一段时间的应用程序的经验。 由于其中一些应用程序的规模,通常需要支持较旧的iOS版本。 当您还考虑到迁移中的小错误可能会影响成千上万的人这一事实时,就必须了解代码的内容。 推送通知是由于需要设置而难以测试的技术之一。 由于推送通知已经存在了一段时间,因此本文将不讨论如何实现它们。 取而代之的是,它将尝试阐明有关推送通知的各个方面,这些方面对于新来者可能并不那么明显,或者甚至可能被某些资深人士忽略。 其中之一是实际调用每个处理程序方法的时间。 必须先正确配置两件事,然后才能接收推送通知。 设备功能 该应用必须指定其支持的功能。 要接收推送通知,必须打开“推送通知”功能。 也可以打开的另一个功能是“远程通知” 。 可以在“背景模式”组下找到该应用程序,并允许您的应用程序在后台启动,以响应其有效负载包含“内容可用”标志的通知(也称为静默通知)。 设备令牌 获取设备令牌是必要的,以便您的服务器可以使用它来通过Apple的分发系统发送通知。 可以通过调用以下方法来检索设备令牌: 它将在您的AppDelegate方法中返回适当的响应。 但是, 调用此方法的时间取决于当前设置的设备功能。 也就是说,如果您没有启用“远程通知”功能,则必须先征得用户许可才能显示警报,然后才能检索设备令牌。 但是,如果打开,则可以随时检索设备令牌。 使用以下方法可以要求用户授予许可。 在iOS 10之前,使用UIApplication方法: registerUserNotificationSettings(_ 🙂 从iOS 10开始,使用UserNotifications框架方法: requestAuthorization(options:completionHandler 🙂 setNotificationCategories(_ 🙂 经常被忽略的是实际上有两种类型的推送通知。 “警报通知” 这些通知用于警告或通知用户某些事情。 它们可以包括警报,设置徽章甚至播放特定的声音。 仅需要“推送通知”功能。 检索设备令牌之前,需要用户的许可。 它们的有效载荷与此类似(示例摘自Apple文档): { “ aps”:{ “ alert”:“您收到了电子邮件。”, “徽章”:9 “声音”:“ bingbong.aiff” }, “ acme1”:“ bar”, “ acme2”:42 } […]