经过大量研究后,我发现这是一个很受欢迎的问题,但是我发布了一个新问题,因为它们都没有帮助解决我的问题。
我正在关注this tutorial,以便为Push Notifications
设备创建iOS
。
看起来一切正常,因为当我执行simplepush.php
代码时,它会返回
连接到APNS
消息已成功发送
但设备没有收到任何推送消息。
一些关键点:
sandbox
服务器进行通信。没有搞乱生产问题。这就是我在AppDelegate.m
文件上获取令牌的方式:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
// Override point for customization after application launch.
if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)])
{
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
}
else
{
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}
return YES;
}
#ifdef __IPHONE_8_0
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
//register to receive notifications
[application registerForRemoteNotifications];
}
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler
{
//handle the actions
if ([identifier isEqualToString:@"declineAction"]){
}
else if ([identifier isEqualToString:@"answerAction"]){
}
}
#endif
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSLog(@"My token is: %@", deviceToken);
}
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
NSLog(@"Failed to get Token, error: %@",error);
}
启动应用程序时的令牌响应(对我来说没问题):
2015-12-03 13:27:27.930 PushChat [598:246912]我的代币是:8a0b645c 46c0547a 3078be82 52b4a82d 9b579530 fb9a902d>
答案 0 :(得分:3)
刚刚解决了同样的问题。在我的情况下,问题与证书或私钥无关,而是与通配符App Id相关。我有一个应用程序包,我用于许多商业应用程序,所以我有一个通配符应用程序ID com.domain。* 和一组配置文件关联(开发,appstore,adhoc)。我知道为了使用Push Notifications,需要一个唯一的App Id,实际上XCode会自动生成来自通配符的唯一App ID。但这还不够:配置文件仍然连接到通配符App Id。我必须使用与 com.domain.appname 唯一应用ID直接关联的新唯一配置文件(我使用自动生成的XCode)来签署目标。当然,如果您想使用推送通知,则不能为多个应用程序使用一个配置文件,但您必须为每个应用程序ID创建配置文件。
如果您打算使用Game Center,In-App Purchase等服务 推送通知,或想要一个应用程序唯一的捆绑ID,使用 显式的App ID。