Parse.com响应推送通知

时间:2014-08-29 01:20:49

标签: ios objective-c push-notification parse-platform response

我想在我的应用中通过推送通知设置回复。

用户A向用户B发送消息。

用户B打开应用程序(通过推送)到新页面。

用户B向用户A发送响应(作为推送)。

现在我可以打开页面,但我不确定如何获取我需要的数据。

这是我从第一次推送Parse获得的:

userInfo: {
    aps =     {
        alert = "demo says HELLO WORLD";
    };

在这种情况下,demo是发送第一次推送的用户的用户名。我想知道,以便用户B的应用程序知道将回复发送给谁。

这是我的推送代码:

    PFPush *push = [[PFPush alloc] init];
    [push setQuery:pushQuery];
    [push setMessage:[NSString stringWithFormat:@"%@ says HELLO WORLD", [PFUser currentUser].username]];
    [push sendPushInBackground];

2 个答案:

答案 0 :(得分:2)

您必须从AppDelegate处理此问题。有两种方法可以从推送通知中接收数据。

//Receive Push Notification when the app is active in foreground or background
- (void)application:(UIApplication *)application 
           didReceiveRemoteNotification:(NSDictionary *)userInfo {

  if(userInfo){
   //TODO: Handle the userInfo here
   }
}

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    //Get the push notification when app is not open
    NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];

    if(remoteNotif){
        [self handleRemoteNotification:application userInfo:remoteNotif];
    }

    return YES;
}

-(void)handleRemoteNotification:(UIApplication*)application userInfo:(NSDictionary*)userInfo{

    if(userInfo){
       //TODO: Handle the userInfo here
    }
}

以下更新的答案: -

在这种情况下,我认为您应该使用setData代替setMessage

NSString * message =[NSString stringWithFormat:@"%@ says HELLO WORLD", [PFUser currentUser].username];
NSString * userID =  @"userid"; //TODO: set Your userID here

NSMutableDictionary * dataDict = [[NSMutableDictionary alloc]init];
[dataDict setObject:message forKey:@"message"];
[dataDict setObject:userID forKey:@"userID"];

PFPush *push = [[PFPush alloc] init];
[push setQuery:pushQuery];
[push setData:dataDict];
[push sendPushInBackground];

答案 1 :(得分:0)

通知有效负载可以包含字典条目,以便向接收应用程序提供其他数据。这在Apple Local and Push Notification Programming Guide

中有记录

在Parse中生成Push消息时,可以添加发送用户的objectID,以使您的有效负载看起来像这样

userInfo: {
    aps =     {
        alert = "demo says HELLO WORLD";
    },
    sendingUserObject:142Xyd23
};

您的Cloud Code就是这样的 -

var pushMsg=user.get("username")+" says HELLO WORLD";
var pushData={alert: pushMsg, sendingUserObject: user.id};
var pushMap= {};
pushMap["data"]=pushData;
var deviceQuery=new Parse.Query("installations"); 
deviceQuery.equalTo("currentUser",destination);
deviceQuery.exists("deviceToken");
pushMap["where"]=deviceQuery;
Parse.Push.send(pushMap);

然后,当您在应用中收到通知时,您可以从userInfo词典中检索发送对象ID -

NSString senderID=userInfo[@"sendingUserObject"];