发布
社区首页 >问答首页 >IOS目标推送通知-解析API

IOS目标推送通知-解析API
EN

Stack Overflow用户
提问于 2014-09-08 21:48:10
回答 1查看 275关注 0票数 0

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

EN

回答 1

Stack Overflow用户

发布于 2014-09-08 22:51:43

在实现自己的身份验证和推送警报系统时,我也遇到过类似的问题和顾虑。我就是这么处理的。

在AppDelegate.m中:

代码语言:javascript
代码运行次数:0
复制
- (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中

代码语言:javascript
代码运行次数:0
复制
- (void)authenticatedAndRegisterForPush {
    PFInstallation *currentInstallation = [PFInstallation currentInstallation];
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert)];
    NSString *appUser = uniqueString;
    [currentInstallation addUniqueObject:appUser forKey:@"channels"];
    [currentInstallation saveInBackground];
}

我不能100%确定您是否需要再次添加通道,因为didRegister方法会处理逻辑,但我正在这样做,并且它似乎工作正常。然后,在任何视图控制器中,您只需调用PFInstallation对象,为其订阅频道,然后保存即可。

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

我相信在iOS 8中远程/推送通知有一些小的变化,所以如果你是在iOS开发工具包的基础上构建的,那么appDelegate方法可能会有很小的变化。

如果你想删除用户的推送通知,你必须做与注册过程相反的事情。调用安装程序,删除它将侦听的所有频道,然后保存。

据我所知,PFInstallation会查看是否有与appBundle相关的安装实例。因此,如果您注销并重新登录,它会识别相同的设备和安装。只有在我没有正确清理通道的情况下,我才会遇到注销和推送通知的问题。当在创建多个安装的同一设备上删除和重新安装时,测试也是一件痛苦的事情。我还没有找到一个很好的解决这个问题的方法,但是如果你找到了,请让我知道。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25725806

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档