在iPhone中没有收到任何推送通知

时间:2013-04-22 05:32:20

标签: ios iphone objective-c push-notification apple-push-notifications

我使用this tutorial为推送通知制作了一个示例PushTest应用。

使用上面的教程我得到的消息是'PushTest'想要发送推送通知(只需一次),之后我从iPhone中删除应用程序,重新启动iPhone但无法再次收到相同的消息。

我已经运行了脚本sample.php(更新了建议的更改)并获得了“连接到APNS”的消息。 '你的消息发送'。

但我没有收到任何单一推送通知。

请指导我哪里错了?
或者我尝试接受推送通知的内容。

8 个答案:

答案 0 :(得分:29)

仅在2个案例中不会收到推送

1。)如果你的应用程序在前台。

2。)您的设备令牌无法接收推送通知请检查两种情况如果您仍然没有收到推送请告诉我。 感谢

答案 1 :(得分:6)

确保您使用推送通知启用配置文件。然后检查是否要将令牌发送到服务器。

答案 2 :(得分:5)

当心电池问题,将您封锁一天或更长时间

除非手机已充满电,否则切勿以开发模式(受限制的手机)启动测试。

https://developer.apple.com/library/archive/technotes/tn2265/_index.html

如果您的通知有效负载包含内容可用的密钥,则如果iOS或OS X确定这样做是节能的,则您的应用将收到通知。如果超出设备的能源或数据预算,则在重置预算之前,您的应用程序 不会再收到带有内容可用键的通知 。每天 发生一次,并且不能通过用户或开发人员的操作更改

通常,关于手机电池状态的通知(特别是在您受到束缚时)会令人发指。 (此外,该文章中提到的某些内容非常旧,这是很明显的错误。)基本上,如果您的手机进入“由于电池不接收通知”模式,您通常永远都不会收到通知-而且它可以正常工作连续几天。

通知确实(或确实)更喜欢蜂窝WTF !!!

在iOS上,即使设备当前正在使用Wi-Fi进行其他网络活动(例如Web浏览或电子邮件),推送通知也会尽可能使用蜂窝数据网络。但是,如果蜂窝数据服务不可用,则推送服务将退回到Wi-Fi。

在不同的iOS版本中,这已经发生了很大的变化,但这是一个巨大的麻烦。

>>>>> !!!重要提示! <<<<<< / h1>

别忘了:

  1. 构建到系留电话。您将仅收到“沙盒开发”推送通知。 几乎没有工作-它们到来很晚,在某些地区不工作,依此类推。它们很普通,通常不值得尝试。

  2. 增加内部版本号,为测试飞行正常构建,发送到测试飞行,然后从测试飞行安装。现在,您会收到 正确的,正常的苹果推送通知

您非常困惑您 !! DO !! 收到有关开发测试飞行版本的 REAL 推送通知。< / p>

也就是说-在构建到TestFlight时,您执行获取与在应用商店中发布的实际应用完全相同的“真实” 推送通知,并由您的公共用户使用-真实,真实的APNS推送通知。

名为“开发,沙箱”的推送通知令人难以置信,它是“系留电话机”的 。 (并且,为了增加混乱,“开发,沙箱”推送通知非常不可靠,因此您永远无法真正知道它们是否有效。)

在此处了解更多信息! https://stackoverflow.com/a/60550859/294884

答案 3 :(得分:2)

我遵循了相同的教程。

确保您的应用列在通知中心,并且它的警报类型不是任何内容。

您需要在3个条件中查看通知,

当您的应用程序处于打开状态,后台处理以及关闭时。

为此,您需要检查这些方法

// To Register your device token
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken

//If your app is not able to register
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{}

//Your app receives push notification.
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{

    UIApplicationState state = [application applicationState];

    // If your app is running
    if (state == UIApplicationStateActive)
    {

        //You need to customize your alert by yourself for this situation. For ex,
        NSString *cancelTitle = @"Close";
        NSString *showTitle = @"Get Photos";
        NSString *message = [[userInfo valueForKey:@"aps"] valueForKey:@"alert"];
        UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@""
                                                            message:message
                                                           delegate:self
                                                  cancelButtonTitle:cancelTitle
                                                  otherButtonTitles:showTitle, nil];
        [alertView show];
        [alertView release];

    }
    // If your app was in in active state
    else if (state == UIApplicationStateInactive)
    {
    }
}

答案 4 :(得分:1)

请检查设备的设置,如果该应用程序的通知已开启,请确保通知中心中的通知类型不是“无”。

答案 5 :(得分:1)

确保您选择了正确的配置文件provision profile

并且您的应用程序已最小化。如果应用未最小化,请使用

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    NSLog(@"info %@", userInfo);
}

关于问题的其他useful information

对于TESTING推送,您可以使用APN Tester Free注意:使用空格插入令牌。

答案 6 :(得分:0)

我没有得到任何东西:

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any])

但我的编译器在

中的断点处停止了
func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any], fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)

答案 7 :(得分:0)

我遇到了类似的问题。一切都在代码中正确完成。我正在运行带有开发配置文件的应用程序,并在服务器(iOS)上将指向生产的推送通知推送。确保您的配置文件符合服务器设置(沙盒与生产)。您还可以确保设备正确注册。