直接在推送 iOS 上启动 App

Posted

技术标签:

【中文标题】直接在推送 iOS 上启动 App【英文标题】:Launch App directly on push iOS 【发布时间】:2016-01-06 09:48:16 【问题描述】:

我可以在收到推送时启动应用程序,而不点击推送通知吗?

此类行为的示例:当应用处于后台时,显示 voip 应用的来电屏幕。

据我所知,APN 推送通知是不可能的,但在 ios 8 中,Apple 引入了带有 Voip 推送类型的 PushKit 框架,据我所知,我可以使用它们实现我想要的行为。

【问题讨论】:

不,你不能。没有这样的功能。 我没有读过关于 PushKit 的文章,但从用户的角度来看,如果一个应用程序可以像这样启动自己,而没有用户交互。我真的希望你的问题没有答案。 @NicolasMiari 我可以在 android 和所有 Android VoIP 应用程序上都有这样的行为,我认为当你有 voip 来电时看到通话屏幕很舒服(就像你在常规通话中看到通话屏幕一样) . 【参考方案1】:

不,这是完全不允许的,也不太可能是 Apple 推出的一项功能。

【讨论】:

请解释一下link >使用 PushKit 接收 VoIP 推送有很多优点: >与标准推送通知不同,用户必须先响应 >您的应用可以执行操作,VoIP 推送直接进入您的应用程序进行 > 处理。 >即使您的应用在后台运行,也会为您的应用提供运行时间来处理推送。 这仅适用于 VoIP 应用程序,不适用于其他应用程序。【参考方案2】:

您只能接收用户从通知中心点击或选择的通知的有效负载。

但是有一种方法,你可以使用它来处理你的每一个推送通知。将值为 1 的 key content-available 添加到您的 aps 字典中。

它看起来像,


    "aps" : 
        "alert" : 
            "title" : "Game Request",
            "body" : "Bob wants to play poker",
        ,
        "badge" : 5
        "content-available" : 1
    

如果 iOS 系统检测到此键值为 1 的 pushNotification,它将调用您的 appDelegate 的 application:didReceiveRemoteNotification:fetchCompletionHandler:

【讨论】:

你回答的最后一行它将调用你的appDelegate的application:didReceiveRemoteNotification:fetchCompletionHandler:这是否意味着我可以启动我的应用程序? 应用程序将在后台启动并调用上述方法 如果我想让我的应用在前台打开,即手机屏幕?有什么技巧吗? 否 接收推送时不能在前台打开应用,因为推送只是用来通知用户 似乎开发人员是 iOS 的奴隶。范围之外什么都做不了..哈哈哈【参考方案3】:

不,它很可能永远不会成为功能。 即使你(假设)从技术上介绍它,苹果现在也会屏蔽你的应用。

Pushkit 仅用于接收 VoIP 呼叫(显然需要在那里)。就是这样。为了 通用应用程序,它不存在。

【讨论】:

以上是关于直接在推送 iOS 上启动 App的主要内容,如果未能解决你的问题,请参考以下文章

项目实战:iOS极光推送集成(30分钟搞定)

更新远程推送通知上的 UIMutableUserNotificationAction 按钮标题

iOS开发 首次启动显示用户引导,第二次启动直接进入App,UIScrollView,UIPageControl,NSUserDefaults

iOS 11 应该由 App Delegate 方法或仅由 UNDelegate 方法处理推送通知

推送 iOS 10

iOS 关于信鸽推送点击推送通知的处理