是否有可能知道应用程序是否从推送通知启动/打开? 我猜这个启动事件可以在这里抓到: – (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if (launchOptions != nil) { // Launched from push notification NSDictionary *notification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; } } 但是,当应用程序在后台时,如何才能检测到它是从推送通知中打开的?
如何创build一个.pem文件存储在托pipe服务器的APN有效载荷数据?
我一直在努力创build一个简单的iOS应用程序,可以接收推送通知。 我这样做的唯一理由是为其他一些团队成员build立一个程序,并且无法在networking上的其他地方find最新的工作版本。 我们的商店对于iOS开发来说相当新颖,我个人对iOS开发和Xcode完全没有经验。 我偶然发现了苹果和其他地方的数十篇教程,文章和麻烦post,我觉得我可能已经快到了那里了。 这里是我必须要注意的地方(注意我使用的是Xcode 4.3,并且最初尝试部署到iOS 5.1,而且我收集到一些事情可能已经在最近版本的Xcode上发生了变化,但是我又是新手了这 – 发现它完全混乱和复杂): 1)我的iPhone上有一个configuration文件,启用了Push 2)在我的testingXcode项目中,我已经select了供应configuration文件作为签名身份(在“生成设置”>“代码签名”中) 3)我有我的捆绑标识符摘要和信息>自定义iOS目标属性设置正确*(我认为??) 4)我有我的委托didFinishLaunchingWithOptions被调用registerForRemoteNotificationTypes 5)我已经在我的委托中设置了logging设备令牌或错误的didRegisterForRemoteNotificationsWithDeviceToken和didFailToRegisterForRemoteNotificationsWithError 6)我在“摘要”下选中了“启用权利”。 7)右边下面select的权利文件是Tinker6(我的testing项目的名称),这是我自动生成时,我检查启用权利 8)在Tinker6.entitlements文件中,我收到了以下内容(我收集的内容是基于Web上的几个不同的post,但是我无法从Apple本身find任何明确的信息): 更新 9)此外,我已经尝试了没有权利文件的整个事情,并获得基本相同的结果。 10)我的mobileprovision文件的内容包括正确的权利(我炒编号和域,但结构相同): <key>application-identifier</key> <string>12355456A7.com.whatever.tinker</string> <key>aps-environment</key> <string>development</string> <key>get-task-allow</key> <true/> <key>keychain-access-groups</key> <array> <string>12355456A7.*</string> </array> /结束更新 当我尝试在我的设备上运行此操作时,Xcode输出中出现以下错误: 2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error: Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x24a3b0 {NSLocalizedDescription=no valid 'aps-environment' […]
我正在做一个应用程序,我想实施苹果推送通知服务。 我正在按照本教程中的步骤进行操作。 但是,仍然没有调用这些方法。 我不知道是什么原因造成的问题。 任何人都可以帮我吗? – (void)application:(UIApplication *)appdidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { //NSString * token = [[NSString alloc] initWithData:deviceTokenencoding:NSUTF8StringEncoding]; NSString *str = [NSString stringWithFormat:@"Device Token=%@",deviceToken]; NSLog(@"Device Token:%@",str); //NSLog(@"Device token is called"); //const void *devTokenBytes = [deviceToken bytes]; //NSLog(@"Device Token"); } – (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { NSString *str = [NSString stringWithFormat: @"Error: %@", err]; NSLog(@"Error:%@",str); }
我的问题是我想显示一个加载屏幕的初始推送通知提示“该应用程序想发送推送通知。” 所以,如果用户点击yes我可以继续,然后启动应用程序,然后调用委托方法: – (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken { [self hideLoadingScreen]; } – (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error { [self hideLoadingScreen]; } 但是,如果用户打no ,这些方法都不会被调用,这是有道理的。 我的问题是,是否有不同的委托方法会被拒绝? 我的问题是,如果noselect,加载屏幕永远不会消失。 所以我不知何故需要知道用户何时完成select。
一旦创build,推送通知设备令牌就会改变? 应用程序更新时的示例 ? 或在任何其他情况下,它可以改变?
我正在寻找一种方法来确定用户是否通过设置启用或禁用了我的应用程序的推送通知。