Subscription to a topic is necessary to receive Push to User notifications. Once a user subscribes to a topic, all push messages sent to this topic will be delivered to the user.
The following sample code subscribes to an application-scope topic named SendingAlert
.
Swift:
// Instantiate an existing topic in the application scope.
let topicName = "SendingAlert"
let topic = Kii . topic ( withName : topicName )
do {
// Subscribe to the topic.
try KiiUser . current () !. pushSubscription () . subscribeSynchronous ( topic )
} catch let error as NSError {
// Handle the error.
return
}
// Instantiate an existing topic in the application scope.
let topicName = "SendingAlert"
let topic = Kii . topic ( withName : topicName )
// Subscribe to the topic.
KiiUser . current () !. pushSubscription () . subscribe ( topic ) { ( subscription : KiiPushSubscription , error : Error ?) -> Void in
if error != nil {
// Handle the error.
return
}
}
Objective-C:
NSError * error = nil ;
// Instantiate an existing topic in the application scope.
NSString * topicname = @"SendingAlert" ;
KiiTopic * topic = [ Kii topicWithName : topicname ];
// Subscribe to the topic.
KiiPushSubscription * subscription = [[ KiiUser currentUser ]. pushSubscription subscribeSynchronous : topic
error : & error ];
if ( error != nil ) {
// Handle the error.
return ;
}
// Instantiate an existing topic in the application scope.
NSString * topicname = @"SendingAlert" ;
KiiTopic * topic = [ Kii topicWithName : topicname ];
// Subscribe to the topic.
[[ KiiUser currentUser ]. pushSubscription subscribe : topic
block : ^ ( KiiPushSubscription * subscription , NSError * error ) {
if ( error != nil ) {
// Handle the error.
return ;
}
}];
The next sample code subscribes to a group-scope topic named GroupTopic
. In this sample code, we are getting the existing topic with its URL.
Swift:
// Instantiate an existing group.
let group = KiiGroup ( uri : groupURI )
// Instantiate an existing topic in the group scope.
let topicName = "GroupTopic"
let topic = group . topic ( withName : topicName )
do {
// Subscribe to the topic.
// (The current user must be a group member)
try KiiUser . current () !. pushSubscription () . subscribeSynchronous ( topic )
} catch let error as NSError {
// Handle the error.
return
}
// Instantiate an existing group.
let group = KiiGroup ( uri : groupURI )
// Instantiate an existing topic in the group scope.
let topicName = "GroupTopic"
let topic = group . topic ( withName : topicName )
// Subscribe to the topic.
// (The current user must be a group member)
KiiUser . current () !. pushSubscription () . subscribe ( topic ) { ( subscription : KiiPushSubscription , error : Error ?) -> Void in
if error != nil {
// Handle the error.
return
}
}
Objective-C:
NSError * error = nil ;
// Instantiate an existing group.
KiiGroup * group = [ KiiGroup groupWithURI : groupUri ];
// Instantiate an existing topic in the group scope.
NSString * topicname = @"GroupTopic" ;
KiiTopic * topic = [ group topicWithName : topicname ];
// Subscribe to the topic.
// (The current user must be a group member)
KiiPushSubscription * subscription = [[ KiiUser currentUser ]. pushSubscription subscribeSynchronous : topic
error : & error ];
if ( error != nil ) {
// Handle the error.
return ;
}
// Instantiate an existing group.
KiiGroup * group = [ KiiGroup groupWithURI : groupUri ];
// Instantiate an existing topic in the group scope.
NSString * topicname = @"GroupTopic" ;
KiiTopic * topic = [ group topicWithName : topicname ];
// Subscribe to the topic.
// (The current user must be a group member)
[[ KiiUser currentUser ]. pushSubscription subscribe : topic
block : ^ ( KiiPushSubscription * subscription , NSError * error ) {
if ( error != nil ) {
// Handle the error.
return ;
}
}];
The last sample code subscribes to a user-scope topic named MyTODO
.
Swift:
// Instantiate an existing topic in the user scope.
let user = KiiUser . current () !
let topicName = "MyTODO"
let topic = user . topic ( withName : topicName )
do {
// Subscribe to the topic.
try KiiUser . current () !. pushSubscription () . subscribeSynchronous ( topic )
} catch let error as NSError {
// Handle the error.
return
}
// Instantiate an existing topic in the user scope.
let user = KiiUser . current () !
let topicName = "MyTODO"
let topic = user . topic ( withName : topicName )
// Subscribe to the topic.
KiiUser . current () !. pushSubscription () . subscribe ( topic ) { ( subscription : KiiPushSubscription , error : Error ?) -> Void in
if error != nil {
// Handle the error.
return
}
}
Objective-C:
NSError * error = nil ;
// Instantiate an existing topic in the user scope.
KiiUser * user = [ KiiUser currentUser ];
NSString * topicname = @"MyTODO" ;
KiiTopic * topic = [ user topicWithName : topicname ];
// Subscribe to the topic.
[[ KiiUser currentUser ]. pushSubscription subscribeSynchronous : topic
error : & error ];
if ( error != nil ) {
// Handle the error.
return ;
}
// Instantiate an existing topic in the user scope.
KiiUser * user = [ KiiUser currentUser ];
NSString * topicname = @"MyTODO" ;
KiiTopic * topic = [ user topicWithName : topicname ];
// Subscribe to the topic.
[[ KiiUser currentUser ]. pushSubscription subscribe : topic
block : ^ ( KiiPushSubscription * subscription , NSError * error ) {
if ( error != nil ) {
// Handle the error.
return ;
}
}];
For all examples, here is a brief description of what is happening in the sample code:
Instantiates a target topic.
Calls the subscribeSynchronous:error:
method while specifying the target topic.