Tag: 苹果推通知

Apple推送通知设置远程通知方法将覆盖其他方法

我已经正确设置了Remote Notifications应用程序 func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) 并且每当应用程序收到Apple Push Notification时,它都会正确处理它。 但是我的问题是,这个方法现在在所有情况下都被调用。 didFinishLaunchingWithOptions似乎不被称为了? 或者launchOptions是空的? 基本上我使用didReceiveRemoteNotification作为捕获所有处理任何传入的通知,这是我的目的,但是当我单击通知本身时,它会再次触发didReceiveRemoteNotification 。 因此处理通知两次,这是我不想要的。 所以这就是我希望我的应用程序处理通知的方式: 任何时候收到通知,都想在后台自动处理通知 当用户点击来自外部应用程序的通知时,运行与didReceiveRemoteNotification不同的方法 当用户在应用程序内部时,运行与其他方法不同的方法

我可以使用苹果推送通知服务让我的应用程序做一些事情,而不通知iOS 7中的用户

我的algorithm希望以这种方式工作 – 如果在我的服务器上发生了一些所需的事件,那么我希望向我的应用程序(前台或后台)的每个用户发送less量数据。 但是,而不是通知用户,我希望我的应用程序做一些数据计算和确认服务器。 切记不要通知用户。

如何在doRegisterForRemoteNotificationsWithDeviceToken以外的方法中使用设备标记?

我通过didRegisterForRemoteNotificationsWithDeviceToken方法获得了设备令牌。 我想用另一种方法使用设备令牌。 我以这种方式尝试过 在didRegisterForRemoteNotificationsWithDeviceToken方法中: str = [NSString stringWithFormat:@"%@",deviceToken]; // str is the NSString which is declared in the appDelegate.h file as global variable 在didReceiveRemoteNotification方法中: NSLog(@"Device Token : %@",str); 当我这样做时, Device Token返回为“nosniff”。 我如何将这个设备令牌存储在一个全局variables中,并在其他类或其他方法中使用它。

即使应用程序终止,也可以获得Apple的远程推送通知

我正在开发一个iOS应用程序,它在特定的时间间隔接收苹果的远程推送通知。 当应用程序处于活动状态以及应用程序处于后台时,都会成功接收通知。 但是,当应用程序从应用程序切换器/docker终止,直到应用程序再次启动才会收到通知。 我曾尝试下面的代码,以保持应用程序在后台活着。 这个相同的代码是在applicationWillTerminate:方法中实现的,但是不起作用。 __block UIBackgroundTaskIdentifier bgTask ; UIApplication *app = [UIApplication sharedApplication]; bgTask = [app beginBackgroundTaskWithExpirationHandler:^{ [app endBackgroundTask:bgTask]; [app enabledRemoteNotificationTypes]; bgTask = UIBackgroundTaskInvalid; }]; 甚至在应用程序终止后,接收通知的最佳方式是什么?

处理远程通知

我正在阅读如何处理开发者苹果指南上的远程通知。 我的问题是两个:这个短语的解释是什么? 通知在应用程序未在前台运行时传递 没有运行在前景​​覆盖的背景下,没有运行或仅处于后台状态。 根据这个解释,下面这句话: 在运行iOS的设备上点击应用程序图标,应用程序调用相同的方法,但不提供有关通知的信息。 有不同的意义。 第二个问题涉及到我连续发出两个远程通知的情况:当我在方法中打开应用程序时 应用程序:didFinishLaunchingWithOptions:或应用程序:didReceiveRemoteNotification: 我有关于所有通知的信息,或只是最后一个?

任何限制通过APNS或C2DM推送通知?

在企业中,我们会向17000名员工发送推送通知。 他们有智能手机(iOS,Android)。 我们预计每年发送约1800万个推送通知。 通过APNS或C2DM推送通知计数是否有限制? 苹果或谷歌的通知限制我找不到官员文件。 在部署我们的应用之前,我们必须检查这个。 请帮帮我。

iOS在播放应用程序时收到推送通知时播放声音

如何在前台应用程序接收推送通知时播放声音。 我的代码: – (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { if (application.applicationState == UIApplicationStateActive) { //create an audio player and play the sound NSString *path = [[NSBundle mainBundle] pathForResource:@"whistle" ofType:@"caf"]; NSURL *fileURL = [[NSURL alloc] initFileURLWithPath: path]; AVAudioPlayer *theAudio=[[AVAudioPlayer alloc] initWithContentsOfURL:fileURL error:NULL]; theAudio.volume = 1.0; [theAudio prepareToPlay]; [theAudio play]; } NSLog(@"didReceiveRemoteNotification %@",userInfo); }

Apns php错误“无法连接到APNS:110连接超时。”

我从这个Apns代码完成了php和objective c的代码 并从此链接设置证书 沙箱和生产apns发送通知到ios设备完美地工作在我的server.I移动代码和相同的证书到客户端服务器,然后发送通知不起作用。 我debugging所有的PHP代码,发现它停在这行代码 private function _connectSSLSocket($development) { $ctx = stream_context_create(); stream_context_set_option($ctx, 'ssl', 'local_cert', $this->apnsData[$development]['certificate']); $this->sslStreams[$development] = stream_socket_client($this->apnsData[$development]['ssl'], $error, $errorString, 100, (STREAM_CLIENT_CONNECT|STREAM_CLIENT_PERSISTENT), $ctx); if(!$this->sslStreams[$development]){ $this->_triggerError("Failed to connect to APNS: {$error} {$errorString}."); unset($this->sslStreams[$development]); return false; } return $this->sslStreams[$development]; } apns.log文件显示错误“无法连接到APNS:110连接超时。 没有得到错误。 为什么这个错误是我得到,而不是发送通知到iOS设备? 任何人都可以指导我吗?

当从Xcode推送通知安装生成工作,但是当安装Ipa它不工作

我在我的应用程序中实现推送通知,它正在工作,当我从xcode安装生成,但不工作时,我通过diawi.com生成的链接安装应用程序为什么发生这种情况?

诊断从Azure通知集线器丢弃的通知到APNS

我们通过Azure通知集线器(通常)成功实现了向iOS和Android设备发送推送通知。 问题是,有些iOS设备显然从来没有收到由Azure通知集线器发送的通知。 我们使用模板和标签来将消息定向到适当的设备。 标签是感兴趣的话题,而不是用户特定的,所以我们希望标签的一个通知被推送到订阅该标签的所有设备。 Android设备似乎完美地接收他们的通知,但iOS设备不一致。 他们大多数工作。 一对夫妇不。 我们很清楚推送通知是尽力而为,并不能保证可靠性,但是我们有限的testing揭示了更多的设备始终无法接收推送通知,而不是似乎不合理的(两个以上的设备有两个以上的故障)。 这是设置: 我们在后端连接到Azure通知中心并向Azure发送通知的后端有一个简单的C#例程: var outcome = await hub.SendTemplateNotificationAsync(properties, tag); 我们已经使用GetAllRegistrationsAsync方法来确保我们正在检查的每个设备已经成功注册并使用了正确的模板。 每个设备都被注册,所有的模板都是正确的。 我们不在“testing模式”; NotificationHubClient.CreateClientFromConnectionString的enableTestSend参数设置为False。 故障排除: 当我们发送通知时,大多数设备都会收到通知,在特定情况下我们正在testing,请更新徽章计数器的正确编号。 但是,有几个设备似乎没有收到通知。 其中一台设备在重新启动设备后得到通知,但之后停止。 使用上面提到的GetAllRegistrationsAsync方法,我们已经validation问题设备在Azure上正确注册并且具有正确的标签和模板。 我们能够从Azure注册中确定问题设备的设备令牌。 我们使用一个PHP脚本直接与APNS进行通信,通过设备令牌向有问题的设备发送通知。 每次,设备都会收到这个直接发送的通知。 只有来自Azure的通知不可靠。 当我们检查Azure通知中心监控页面时,我们会看到过去24小时的这些指标: 967 APNS成功通知 3 APNS坏通道错​​误 2 APNS过期频道错误 4 APNS错误 …没有其他错误报告的APNS或一般的Azure。 我们所看到的失败率应该会超过20。 我们无法确定哪些设备令牌对错误负责。 有没有办法从Azure获取这些信息? 我们无法解释为什么我们可以通过APNS直接向这些设备发送通知,而不是通过Azure发送通知,为什么Azure不会报告更多的错误。 任何build议或见解?