2011-09-28 115 views
0

我“认为”我的应用程序没有注册推送通知。iPhone客户端未注册推送?

它应该和将代码添加到didFinishLaunchingWithOptions一样简单,然后在测试应用程序警报时推送通知应该(但不在我的情况下)弹出。

我的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
// Override point for customization after application launch. 

self.window.rootViewController = self.viewController; 
[self.window makeKeyAndVisible]; 

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound)]; 

return YES; 
} 

这是一个iPad应用程序。它在没有推动我的真实设备的情况下运行,所以我认为配置是正确的。

任何想法?我不推动不要/允许弹出。

push

回答

1

不要ü有你的委托这个代码?

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

    NSString *str = [NSString 
     stringWithFormat:@"Device Token=%@",deviceToken]; 
    NSLog(str); 

} 

你应该得到所产生的设备令牌并把它放在你想要把你通知你的服务器..

如果比方说您有权对iPhone的一部分一切,问题可能位于在那里你把你的通知,您的服务器代码..

看看本教程的推送通知: http://mobiforge.com/developing/story/programming-apple-push-notification-services

+0

是的。在旁注中,我是否需要将设备令牌发送到我的服务器,如果是这样的话?和哪里? – Rick

+0

是的,你需要将设备令牌发送到服务器。一旦你从上述方法获得令牌,通过网络发送令牌给你的服务器。对于服务器端的示例/代码..你可以尝试去上面的链接.. – sicKo

1

您需要实现的委托方法,并建立了CER证书在您的服务器上。下面是objc侧一些代码:

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)devToken { 
    NSString *token = [[devToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; 
    [[NSUserDefaults standardUserDefaults] setObject:token forKey:@"token"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { 
    [[NSUserDefaults standardUserDefaults] setObject:[NSString stringWithString:@""] forKey:@"token"]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 
    UIAlertView *alert = [[[UIAlertView alloc] initWithTitle:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleDisplayName"] 
                message:[[userInfo objectForKey:@"aps"] objectForKey:@"alert"] 
                delegate:self 
              cancelButtonTitle:@"OK" 
              otherButtonTitles:nil] autorelease]; 
    [alert show]; 
} 
0

是的,我有代码的其他部分也是如此。我的印象是,弹出窗口会发生天气服务器的东西已经完成或没有?

我明白了。我必须得到一个新的配置文件。删除旧的。进入应用程序文件夹。查看项目文件的内容。用文本编辑器打开配置密钥的文件,并用新的密钥代码交换密钥(两个点)。

现在,它的工作。谢谢您的帮助。