【问题标题】:How can I generate PushNotification in iPhone?如何在 iPhone 中生成推送通知?
【发布时间】:2011-10-11 09:44:59
【问题描述】:

我正在尝试在我的应用中实现 Pushnotification 功能。我已经关注了link,直到 PushMeBaby 应用程序都可以正常工作。获得了设备令牌,但我尝试使用 PushMeBaby,出现了一个带有 push 按钮的窗口,当我点击时,什么也没发生。 请帮助我实现该功能。

编辑

我还尝试了here中提到的链接,从cmets中我可以看到都是很棒的教程。

【问题讨论】:

  • 你是什么意思“一个带有按钮的窗口出现了,当我点击时,什么也没发生”?它是从哪里冒出来的?在桌面上还是在手机上?窗口说/看起来像什么?
  • 它出现在我的桌面上。您可以在我的问题中的链接上看到这一点。它包括 devicetoken 和有效负载。

标签: iphone push-notification


【解决方案1】:

确保您已完成以下操作:

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

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

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

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

如果这一切都正确,那么它肯定会起作用。我认为您的问题可能是您没有使用链接到已启用推送通知的 App ID 的开发证书对您的应用程序进行签名,或者您用于推送通知的 SSL 证书存在问题。有一个很棒的教程here

顺便说一句,当您开始使用它并且有兴趣向拥有您的应用程序的每个人(而不仅仅是您自己)发送推送通知时,我建议您查看EasyAPNS

【讨论】:

    【解决方案2】:

    这是一个清单:

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

    【讨论】:

    • 是的,我启用并获得了令牌(它与 devicetoken 相同,对吗?)。我使用了我在我的应用帐户中指定的包标识符。
    【解决方案3】:

    在下面的代码中放入实现.m文件

    - (void)applicationDidFinishLaunching:(UIApplication *)application {    
    
        //Push notifation Delegate Methods.
        NSLog(@"Registering for push notifications...");    
        [[UIApplication sharedApplication] 
         registerForRemoteNotificationTypes:
         (UIRemoteNotificationTypeAlert | 
          UIRemoteNotificationTypeBadge | 
          UIRemoteNotificationTypeSound)];
    
    }
    

    并为推送通知实现 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 {
    
            }
    
        }
    }
    

    【讨论】:

      【解决方案4】:

      我在问题中提到的教程很棒。但我无法在我的越狱设备上实现。但是当我在其他越狱和未越狱的 iPhone 上尝试相同的步骤时。它正在工作。所以,错误出在我的设备上。当我将 iOS 升级到 4.3.3 版时,推送通知功能被禁用。但是当我检查设置时没问题。所以我按照here 中的步骤操作,我得到了它的工作,现在我收到了通知。

      【讨论】:

        猜你喜欢
        • 2013-04-09
        • 2011-10-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-10
        • 2011-01-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多