Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parse platform IOS目标推送通知-解析API_Parse Platform - Fatal编程技术网

Parse platform IOS目标推送通知-解析API

Parse platform IOS目标推送通知-解析API,parse-platform,Parse Platform,我正在实现一个解决方案,允许用户只从他正在跟踪的用户列表中接收推送通知。我在推送邮件时读到有关高级目标收件人的信息。我应该如何设置我的安装对象,以便只接收来自我跟踪的用户的帖子。我是否应该获取他正在跟踪的用户列表并设置安装对象。问题是,我使用的是Parse login view controller,只有在登录之后,我才会得到我正在跟踪的用户列表。我的第二个问题是,如果用户未登录,是否能够获得推送通知。我的第三个问题是,是否每次启动应用程序时都会创建一个新的Parse安装对象?要求是我应该看到来

我正在实现一个解决方案,允许用户只从他正在跟踪的用户列表中接收推送通知。我在推送邮件时读到有关高级目标收件人的信息。我应该如何设置我的安装对象,以便只接收来自我跟踪的用户的帖子。我是否应该获取他正在跟踪的用户列表并设置安装对象。问题是,我使用的是Parse login view controller,只有在登录之后,我才会得到我正在跟踪的用户列表。我的第二个问题是,如果用户未登录,是否能够获得推送通知。我的第三个问题是,是否每次启动应用程序时都会创建一个新的Parse安装对象?要求是我应该看到来自我正在跟踪的用户的推送通知。请告知。

在实施我自己的身份验证和推送警报系统时,我遇到了类似的问题和担忧。我就是这样处理的

在AppDelegate.m中:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
PFInstallation *currentInstallation = [PFInstallation currentInstallation];

if (authenticated) {
    NSString *user = someUniqueStringForUser;
    [currentInstallation addUniqueObject:user forKey:@"channels"];
}

[currentInstallation setDeviceTokenFromData:deviceToken];
[currentInstallation saveInBackgroundWithBlock:^(BOOL succeeded, NSError *error) {
    if (succeeded) {
        NSLog(@"Successful Registration %s", __PRETTY_FUNCTION__);
    } else {
        NSLog(@"Error %@, %s", error, __PRETTY_FUNCTION__);
    }
}];
}

在登录名ViewController.m中

- (void)authenticatedAndRegisterForPush {
    PFInstallation *currentInstallation = [PFInstallation currentInstallation];
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert)];
    NSString *appUser = uniqueString;
    [currentInstallation addUniqueObject:appUser forKey:@"channels"];
    [currentInstallation saveInBackground];
}
由于didRegister方法处理逻辑,我不能100%确定您是否需要再次添加通道,但我正在这样做,它似乎工作正常。然后,在任何视图控制器中,您必须选择要跟随的人,您只需调用PFInstallation对象,将其订阅到频道,然后保存即可

当您想要发送推送通知时,您将把它发送给订阅这些频道的所有人。如果没有向安装注册设备令牌信息,则Parse将无法发送推送通知

我相信在iOS 8中对远程/推送通知有一些小的更改,因此,如果您是根据iOS SDK构建的,那么对appDelegate方法的更改可能很少

如果要删除用户的推送通知,则必须执行与注册过程相反的操作。调用安装,删除它将侦听的所有频道,然后保存

据我所知,PFInstallation查看是否存在与appBundle相关的安装实例。因此,如果您要注销并重新登录,它会将设备和安装识别为相同。只有在没有正确清除频道的情况下,我才会在注销和推送通知方面遇到问题。在创建多个安装的同一设备上删除和重新安装时,测试也会带来麻烦。我还没有找到解决这个问题的好办法,但如果你找到了,请告诉我


希望这能有所帮助。

谢谢,但我不太清楚如何将推送通知定向到用户的追随者。我看到您为通道密钥提供了一个唯一的字符串,但通道更宽。假设用户A正在跟踪用户B和用户C。如果B或C发布帖子,A应该会收到推送通知。在登录视图控制器中,我是否需要使用用户正在跟踪的列表更新安装对象,以便在其中任何一个发布更新时,他可以获得推送通知。在通知发送部分,PFQuery可以用来定位接收者,谁是他的追随者?通道存储为字符串数组,因此如果用户A订阅通道,比如说“UserB”和“UserC”。如果用户B要发布帖子,您处理帖子的服务将显示“通知所有使用x消息订阅“UserB”频道的用户”。这与NSNotification相同,在NSNotification中,所有侦听通知的ViewController将在发布时接收通知。