您好我正在开发一个应用程序,我已激活推送通知。我使用parse.com。到目前为止,我已经完成了工作,我可以发送通知,设备会收到它,我也会在应用程序上获得徽章。但当我打开时,没有任何事情发生,徽章也不会消失。我已经在我的appdelegate.m中设置了它,因此解析正在处理推送通知。下面是一些使用的代码:
- (void)application:(UIApplication *)application
didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)newDeviceToken {
// Store the deviceToken in the current installation and save it to Parse.
PFInstallation *currentInstallation = [PFInstallation currentInstallation];
[currentInstallation setDeviceTokenFromData:newDeviceToken];
[currentInstallation saveInBackground];
}
还有:
- (void)application:(UIApplication *)application
didReceiveRemoteNotification:(NSDictionary *)userInfo {
[PFPush handlePush:userInfo];
}
由于
好的但是如何在警报视图中显示推送通知的内容?或者这不是问题我只需要配置没有文本的警报视图吗?
答案 0 :(得分:2)
有两种情况:
当应用关闭并且用户点按通知时,就像点击应用图标一样。该应用从application:didFinishLaunchingWithOptions:
开始。要知道应用是否正常打开(点击图标)或通知,只需检查字典launchOptions
以获取密钥UIApplicationLaunchOptionsRemoteNotificationKey
。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSDictionary * pushDictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (pushDictionary)
{
//AlertView
}
}
当应用程序打开时,有两种可能的情况
后台应用UIApplicationStateInactive
应用程序位于前景UIApplicationStateActive
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
if (application.applicationState == UIApplicationStateInactive)
{
//AlertView
}
else if (application.applicationState == UIApplicationStateActive)
{
// AlertView
}
}
pushDictionary
和userInfo
与代表通知的字典完全相同。
修改1
推送通知是iOS自动转换为NSDictionary
的JSON文件。标准配置是:
{"aps":
{
"alert":"Text message",
"sound":"default",
"badge":"1" //the number shown on the app's icon
}
}
在此基础上,您可以扩展JSON并将其放入您自己的内容中。例如
{"aps":
{
"alert":"Text message",
"sound":"default",
"badge":"1" //the number shown on the app's icon
},
"Name":"Fry"
}
现在您可以用这种非常简单的方式检索名称:
NSString * name = userInfo[@"Name"];
并在警报中显示。
修改2
要显示UIAlertView
中的推送内容,请执行以下操作:
UIAlertView *av = [[UIAlertView alloc] initWithTitle:name
message:name
delegate:self
cancelButtonTitle:nil
otherButtonTitles:@"Ok", nil];
[av show];
答案 1 :(得分:0)
如果您在应用未激活(被杀)时收到推送通知
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
不会被触发。而不是你必须使用来自UIApplicationLaunchOptionsRemoteNotificationKey
字典
launchOptions
的对象
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions