我已经像我这样配置了Parse接收api:
[Parse setApplicationId:@"***" clientKey:@"***"];
[application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge|
UIRemoteNotificationTypeAlert|
UIRemoteNotificationTypeSound];
和
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
// Store the deviceToken in the current installation and save it to Parse.
PFInstallation *currentInstallation = [PFInstallation currentInstallation];
[currentInstallation setDeviceTokenFromData:deviceToken];
[currentInstallation saveInBackground];
}
然后在我的代码中,我添加了要订阅的频道:
PFInstallation *currentInstallation = [PFInstallation currentInstallation];
NSMutableArray *array = [NSMutableArray array];
for (Room *aRoom in rooms) {
NSString *strChannel = [NSString stringWithFormat:@"pr_%@", aRoom.roomId];
[array addObject:strChannel];
}
[currentInstallation setChannels:array];
在我的例子中,频道是“pr_4”。
当我在这个频道上推送一些内容时,解析仪表板告诉我没有人订阅频道“pr_4”。我不明白我做错了什么。
答案 0 :(得分:5)
在您提供的代码中,您实际上从未将PFInstallation
对象实际保存到parse.com。你应该添加:
[currentInstallation saveInBackground];
在您设置频道后,在代码末尾。
旁注:您还可以使用subscribeToChannelInBackground:
类中的方法PFPush
来订阅设备到频道:
subscribeToChannelInBackground:
将设备异步订阅到推送通知频道。
+ (void)subscribeToChannelInBackground:(NSString *)channel
<强>参数强>
信道
订阅频道。频道名称必须以。开头 一个字母,只包含字母,数字,短划线和下划线。