我正在使用基于navBased的应用中的推送通知。在AppDelegate.m中didRegisterForRemoteNotificationsWithDeviceToken:在调用registerForRemoteNotificationTypes时不调用:代码如下所示:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
[self.window addSubview:navigationController.view];
[self.window makeKeyAndVisible];
return YES;
}
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
// Get a hex string from the device token with no spaces or < >
NSLog(@"applicationDidFinishLaunchingWithOptions dev token test");
NSString *deviceTokenStr = [[[[deviceToken description]
stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
NSLog(@"Device Token: %@", deviceTokenStr);
}
我很确定配置文件不是问题所在。我发现错误:
注册时出错。错误:错误Domain = NSCocoaErrorDomain Code = 3000“为应用程序找到无效的'aps-environment'权利字符串”UserInfo = 0x115490 {NSLocalizedDescription =找不到有效的'aps-environment'应用程序的权利字符串}
任何人都可以告诉我这个代码中发生了什么,并且它不起作用? thanx
答案 0 :(得分:7)
在Appdelegate didFinishLaunching方法中输入此代码 -
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
然后还可以在同一个appdelegate中复制并粘贴这两个方法 -
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@"My token is: %@", deviceToken);
NSString *dToken = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
dToken = [dToken stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"STR%@",dToken);
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
NSLog(@"Failed to get token, error: %@", error);
}
答案 1 :(得分:3)
检查一下:link 并确保您已打开5223端口。
答案 2 :(得分:3)
我之前遇到了确切的错误“”“”没有为应用程序“”“”找到有效的“aps-environment”权利字符串。
要解决此问题,您需要一个特定的代码签名配置文件,其中包含适用于APNS的App ID(即:不是。*配置文件)。谷歌周围,你可以找到一些关于如何正确解决它的分步指南。
如果您在日志中看到该错误,请尝试在&gt;设置&gt;常规&gt;配置文件下删除iOS设备上的配置文件,然后在管理器中重新检查它们。
答案 3 :(得分:3)
打开您用于应用的移动设备配置文件,并在那里查找“aps-environment”字符串。它应该设置为“开发”或“生产”。
您收到的错误意味着您在配置文件中没有此字符串,因此不允许应用注册推送通知。如果您在为App ID配置推送通知之前创建了配置文件,则会发生这种情况。
如果您没有在iOS开发者门户网站上看到字符串 - 重新创建(删除/创建新的)mobileprovisioning配置文件。这将解决问题。
另外,请确保在提交到AppStore时,还要为您的应用重新创建配置AppStore配置文件。它必须包含相同的“aps-environment”字符串,如果您在为APP ID配置推送通知之前创建了AppStore配置文件,则默认情况下不存在该字符串。
答案 4 :(得分:0)
生成客户端SSL证书后,请创建一个新的配置文件,其中包含您要用于通知的App ID。