如何在iPhone中生成推送通知

时间:2011-10-11 09:44:59

标签: iphone push-notification

我正在尝试在我的应用中实现推送功能。我跟着link,我一直在使用直到PushMeBaby app。得到了设备令牌,但是我尝试使用PushMeBaby,出现了一个带有 push 按钮的窗口,当我突然出现时,什么也没发生。 请帮我实现这个功能。

谢谢。

修改

我还尝试了here中提到的链接,从我可以看到的评论中,所有这些都是精彩的教程。

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:2)

确保您已完成以下操作:

  1. 从Apple Developer Portal成功检索并创建了APNS的SSL证书

  2. 在您的应用中插入了正确的捆绑包

  3. 使用与推送通知所使用的相同应用ID相同的开发证书创建并签署了您的应用

  4. 您的设备令牌绝对正确(即xxxxxxxxxxx,没有空格,没有破折号等,只有字符)

  5. 如果这一切都正确,那肯定会有效。我认为您的问题可能是您没有使用与启用了推送通知的App ID相关联的开发证书对您的应用进行签名,或者推送通知的SSL证书存在问题。有一个很棒的教程here。我希望这有帮助!

    顺便说一下,当你确实让它工作并且你有兴趣向拥有你的应用程序的每个人(而不仅仅是你自己)发送推送通知时,我建议你看看EasyAPNS

答案 1 :(得分:1)

这是一份清单:

  1. 您是否已从Apple开发者中心启用了应用的推送通知?
  2. 服务器的响应是什么?你能拿到你的APNS令牌吗?
  3. 您的应用是否使用通配符作为Bundle ID? APNS需要您的捆绑ID非通配符。

答案 2 :(得分:1)

以下代码放入实现.m文件

- (void)applicationDidFinishLaunching:(UIApplication *)application {    

    //Push notifation Delegate Methods.
    NSLog(@"Registering for push notifications...");    
    [[UIApplication sharedApplication] 
     registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeAlert | 
      UIRemoteNotificationTypeBadge | 
      UIRemoteNotificationTypeSound)];

}

实现Push通知的Delegate方法。

#pragma mark pushnotification

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 


    // Prepare the Device Token for Registration (remove spaces and < >)
    NSString *devToken = [[[[deviceToken description] 
                            stringByReplacingOccurrencesOfString:@"<"withString:@""] 
                           stringByReplacingOccurrencesOfString:@">" withString:@""] 
                          stringByReplacingOccurrencesOfString: @" " withString: @""];


        NSString *str = [NSString 
                         stringWithFormat:@"Device Token=%@",devToken];
        NSLog(@"device token - %@",str);


    REST *rest = [[REST alloc] init];

    [rest resiterForNotification:@selector(notificationRegister_response_arrives:) andHandler:self andToken:devToken];


    [rest autorelease];

}
-(void)notificationRegister_response_arrives:(id)object{
    NSLog(@"%@",object);

    if ([object isKindOfClass:[NSDictionary class]]) {

        if([object valueForKey:@"error"]) {
            NSLog(@"oh!! errors");
        }else {

        }

    }
}

答案 3 :(得分:1)

atlast我找到了这个bug。我在问题中提到的教程很棒。但我无法在我的越狱设备上实施。但是当我在其他越狱和非越狱的iPhone上尝试相同的步骤时。它工作正常。所以,错误在于我的设备。当我将iO升级到版本4.3.3时,推送通知功能被禁用。但是当我检查设置时没关系。所以我按照here中的步骤操作,我开始工作了,现在我收到了通知。

谢谢大家。