Questions tagged «apple-push-notifications»

Apple Push Notification Service是由Apple Inc.创建的与iOS 3.0一起启动的服务。APNS与Mac OS X Lion Server一起使用可将更新通知推送给已注册通过配置文件接收更新的客户端,使用服务器的邮件,日历和联系人服务。这意味着iPhone等设备以及Mac上的iCal之类的应用程序可以收到通知



7
如果用户强行退出,iOS会在后台启动我的应用程序吗?
我通过content-available在推送通知中使用该标志来触发后台获取。我有fetch和remote-notification UIBackgroundModes启用。 这是我在AppDelegate.m中使用的实现: - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { NSLog(@"Remote Notification Recieved"); UILocalNotification *notification = [[UILocalNotification alloc] init]; notification.alertBody = @"Looks like i got a notification - fetch thingy"; [application presentLocalNotificationNow:notification]; completionHandler(UIBackgroundFetchResultNewData); } 当应用在后台运行时,它可以正常运行。(收到通知,应用程序触发了“看起来好像我收到了通知”本地通知,如上面的代码所示)。 但是,当应用程序未运行且收到带有该content-available标志的推送通知时,该应用程序将不会启动,并且didRecieveRemoteNotification永远不会调用委托方法。 WWDC视频多任务处理的新功能(WWDC 2013的#204)显示了以下内容: 它说收到带有content-available标志的推送通知时,应用程序“启动到后台” 。 为什么我的应用程序没有启动到后台? 因此,真正的问题是: 用户强制退出应用后,iOS会执行后台任务吗?

15
registerForRemoteNotificationTypes:在iOS 8.0和更高版本中不支持
尝试在iOS 8.x下注册推送通知时: application.registerForRemoteNotificationTypes(UIRemoteNotificationType.Alert | UIRemoteNotificationType.Badge | UIRemoteNotificationType.Sound) 我收到以下错误: registerForRemoteNotificationTypes: is not supported in iOS 8.0 and later. 有什么想法是新的方法吗?当我在iOS 7.x上运行此Swift应用程序时,它确实起作用。 编辑 在iOS 7.x上,当我包含条件代码时(SystemVersion条件代码或#if __IPHONE_OS_VERSION_MAX_ALLOWED> = 80000) dyld: Symbol not found: _OBJC_CLASS_$_UIUserNotificationSettings



26
通过推送通知检测应用程序是否已启动/打开
是否可以通过推送通知了解应用程序是否已启动/打开? 我想启动事件可以在这里找到: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if (launchOptions != nil) { // Launched from push notification NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; } } 但是,当应用程序在后台运行时,如何从推送通知中检测到它已打开?

29
如何将设备令牌(NSData)转换为NSString?
我正在实施推送通知。我想将我的APNS令牌另存为字符串。 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken { NSString *tokenString = [NSString stringWithUTF8String:[newDeviceToken bytes]]; //[[NSString alloc]initWithData:newDeviceToken encoding:NSUTF8StringEncoding]; NSLog(@"%@", tokenString); NSLog(@"%@", newDeviceToken); } 代码的第一行显示为空。第二个打印令牌。如何获取newDeviceToken作为NSString?

23
如何修复Xcode 4.3中的“找不到适用于应用程序的有效'aps-environment'授权字符串”?
我一直在非常努力地创建一个可以接收推送通知的简单iOS应用程序。我这样做的唯一理由是为其他团队成员建立了使用程序,并且无法在网络上的其他地方找到此类指令的最新工作版本。对于iOS开发人员来说,我们的商店还很陌生,我个人对iOS开发人员和Xcode完全没有经验。我偶然发现了来自苹果公司和其他地方的数十篇教程,文章和故障发布,我觉得我可能快要出现了…… 这是我必须要做的(请注意,我使用的是Xcode 4.3,最初尝试仅部署到iOS 5.1,我发现相对于早期版本的Xcode,最近发生了一些变化,但是我还是新手。这-并且发现它完全令人困惑和困惑): 1)我在iPhone上启用了推送功能的配置文件 2)在我的测试Xcode项目中,我已选择了配置文件作为签名身份(在Build Settings> Code Signing中) 3)我已在“摘要和信息”>“自定义iOS目标属性”下正确设置了我的捆绑包标识符*(我认为??) 4)我在我的代表的didFinishLaunchingWithOptions中调用了registerForRemoteNotificationTypes 5)我的委托中有didRegisterForRemoteNotificationsWithDeviceToken和didFailToRegisterForRemoteNotificationsWithError,分别设置为记录设备令牌或错误 6)我在摘要下选中了启用权利。 7)在所选的权利文件的正下方,是Tinker6(我的测试项目的名称),该文件是在我选中“启用权利”时自动生成的 8)在Tinker6.entitlements文件中,我得到了以下内容(基于网络上的许多不同帖子,我收集的内容是正确的,但我无法从Apple本身找到任何确定的信息): 更新 9)另外,我尝试了没有授权文件的整个过程,并且得到了基本上相同的结果。 10)我的mobileprovision文件内容正确包含权利(我已经打乱了数字和域名,但结构上相同): <key>application-identifier</key> <string>12355456A7.com.whatever.tinker</string> <key>aps-environment</key> <string>development</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>12355456A7.*</string> </array> /结束更新 当我尝试在设备上运行此代码时,在Xcode输出中出现以下错误: 2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error: Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x24a3b0 …

4
续签推送证书并保持当前的App Store应用正常运行
我在应用商店上有一个应用,该应用使用的是iOS供应配置文件(分发版)已过期。此配置文件包含的推送证书也已过期(并且不再出现在门户中)。 问题1:是否可以重新创建推送证书,然后更新配置文件?(我的钥匙串上仍然有推送证书(过期))? 问题2:我是否需要使用包含新的Push证书的新配置文件将应用重新提交到应用商店? 由于推送证书已过期,因此我可能无法将通知发送给该应用程序的现有用户。

17
缺少推送通知权利
我有一个要提交的应用,当它被拒绝并且收到消息时 缺少推送通知权利-您的应用程序似乎已在Apple推送通知服务中注册,但应用程序签名的权利不包括“ aps-environment”权利。如果您的应用程序使用Apple Push Notification服务,请确保在Provisioning Portal中为您的Push ID启用了您的App ID,并在使用包含“ aps-environment”权利的Distribution Provisioning配置文件对您的应用程序进行签名后重新提交。 我检查了临时配置,然后在其中找到了aps环境和生产环境,但是当我打开分配配置时,却没有找到。 这是此错误消息和苹果拒绝的原因,我该如何解决?

10
当您的应用处于打开状态且在前台时,显示股票iOS通知横幅吗?
当Apple的官方iOS Messages应用程序打开并在前台运行时,来自其他联系人的新消息将触发原始的iOS通知股票提示横幅。参见下图。 在App Store的第三方应用程序中有可能吗?当您的应用处于打开状态且处于前台时,您的应用的本地通知和/或推送通知? 测试我的应用程序时,会收到通知,但不会显示iOS警报UI。 但是,这种行为是出现在苹果的官方消息应用程序: 在本地和远程通知编程指南说: 当操作系统传递本地通知或远程通知并且目标应用未在前台运行时,它可以通过警报,图标徽章编号或声音向用户显示通知。 如果在传递通知时应用程序在前台运行,则应用程序委托会接收本地或远程通知。 是的,我们可以在前台接收通知数据。但是我看不到呈现本机iOS通知警报UI的方法。 -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { // I know we still receive the notification `userInfo` payload in the foreground. // This question is about displaying the stock iOS notification alert UI. // Yes, one *could* use a 3rd party toast alert …


11
提交时,Xcode 8“应用程序签名中缺少aps环境权利”
我有一个应用程序,在过去6个月中我们提交了数十个版本,并且我们确实使用了APNS。升级到Xcode 8后,我从Apple收到了以下电子邮件 亲爱的开发人员, 我们发现您最近为APP_NAME交付商品时遇到一个或多个问题。您的交付成功,但是您不妨在下一次交付中更正以下问题: 缺少推送通知权利-您的应用程序包含Apple的推送通知服务的API,但该应用程序的签名中缺少aps环境权利。要解决此问题,请确保在Provisioning Portal中为推送通知启用了您的App ID。然后,使用包含aps-environment权利的发行配置文件对您的应用程序进行签名。这将创建正确的签名,您可以重新提交您的应用程序。有关更多信息,请参见《本地和推送通知编程指南》中的“ Provisioning and Development”。如果您的应用程序不使用Apple Push Notification服务,则无需采取任何措施。您可以从以后的提交中删除该API,以停止此警告。如果您使用第三方框架, 解决问题之后,可以使用Xcode或Application Loader将新的二进制文件上载到iTunes Connect。 问候, App Store团队 奇怪的是我去了developer.apple.com- > 证书,标识符和配置文件,而我的AppId确实仍启用了推送通知。我没有做任何其他的事情,所以我对Xcode 8更新是否有问题感到好奇。有任何想法吗? 顺便说一句:他们在“推送通知编程指南”中放置的链接在电子邮件中已损坏,因此不是一个好兆头。

11
iOS推送通知:当应用程序在后台运行时,如何检测用户是否轻按了通知?
关于此主题有很多stackoverflow线程,但是我仍然没有找到一个好的解决方案。 如果该应用程序不在后台,则可以签launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey]入application:didFinishLaunchingWithOptions:呼叫以查看是否已从通知中打开该应用程序。 如果应用程序在后台运行,则所有帖子都建议使用application:didReceiveRemoteNotification:并检查应用程序状态。但是,正如我进行的实验(以及该API的名称所暗示的那样),该方法在收到通知时被调用,而不是被窃听。 因此,问题是,如果启动了应用程序,然后又将其后台运行,并且您知道收到了通知application:didReceiveNotification(此时application:didFinishLaunchWithOptions:将不会触发),那么您如何知道用户是否通过轻按通知或仅轻按应用程序图标?因为如果用户点击通知,则期望打开该通知中提到的页面。否则不应该。 我可以使用handleActionWithIdentifier自定义操作通知,但是只有在点击自定义操作按钮时才会触发,而不是在用户点击通知主体时触发。 谢谢。 编辑: 在阅读下面的一个答案之后,我想通过这种方式可以澄清我的问题: 我们如何区分这两种情况: (A)1.app进入后台;2.收到通知;3.用户点击通知;4.应用进入前台 (B)1.app进入后台;2.收到通知;3.用户忽略该通知,稍后点击应用程序图标;4.应用进入前台 application:didReceiveRemoteNotification:在两种情况下都在步骤2中触发了因为。 或者,应该application:didReceiveRemoteNotification:仅在步骤3中为(A)触发,但是我以某种方式配置了我的应用程序错误,因此我在步骤2中看到了它?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.