Ich implementiere Push-Benachrichtigungen in meiner App mit dem PubNub SDK für iOS. Mein Build-Ziel ist 9.0.Ich kann keine Push-Benachrichtigungen mit PubNub SDK senden
Ich folge dem Tutorial here, aber ich kann es nicht zur Arbeit und ich fühle, dass ich brauche mehr Informationen, um das Konzept zu verstehen. Werfen Sie einen Blick auf das, was ich getan habe, so weit:
AppDelegate.m
@interface AppDelegate()
@property (nonatomic) PubNub *client;
@end
in der didFinishLaunchingWithOptions
Funktion, betreibe ich diesen Code einrichten Push-Benachrichtigungen:
/* push notifications */
UIUserNotificationType types = UIUserNotificationTypeBadge |
UIUserNotificationTypeSound | UIUserNotificationTypeAlert;
UIUserNotificationSettings *mySettings =
[UIUserNotificationSettings settingsForTypes:types categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSLog(@"deviceToken: %@", deviceToken);
[[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"DeviceToken"];
}
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
NSLog(@"%s with error: %@", __PRETTY_FUNCTION__, error);
}
Das Tutorial postet Code wie folgt, soll das in den Delegaten oder anderen ViewControllern gehen ?:
PNConfiguration *configuration = [PNConfiguration configurationWithPublishKey:@"demo"
subscribeKey:@"demo"];
self.client = [PubNub clientWithConfiguration:configuration];
[self.client addPushNotificationsOnChannels:@[@"wwdc",@"google.io"]
withDevicePushToken:self.devicePushToken
andCompletion:^(PNAcknowledgmentStatus *status) {
// Check whether request successfully completed or not.
if (!status.isError) {
// Handle successful push notification enabling on passed channels.
}
// Request processing failed.
else {
// Handle modification error. Check 'category' property to find out possible issue because
// of which request did fail.
//
// Request can be resent using: [status retry];
}
}];
ViewController.m
@interface MessagingViewController()
@property (nonatomic) PubNub *client;
@property (nonatomic, strong) NSData *devicePushToken;
@end
-(void)viewDidLoad {
NSData *deviceToken = [[NSUserDefaults standardUserDefaults] objectForKey:@"DeviceToken"];
if (deviceToken)
{
self.devicePushToken = deviceToken;
PNConfiguration *configuration = [PNConfiguration configurationWithPublishKey:publishKey
subscribeKey:subscribeKey];
self.client = [PubNub clientWithConfiguration:configuration];
[self.client addPushNotificationsOnChannels:@[self.senderId]
withDevicePushToken:self.devicePushToken
andCompletion:^(PNAcknowledgmentStatus *status) {
// Check whether request successfully completed or not.
if (!status.isError) {
// Handle successful push notification enabling on passed channels.
}
// Request processing failed.
else {
// Handle modification error. Check 'category' property to find out possible issue because
// of which request did fail.
//
// Request can be resent using: [status retry];
}
}];
}
}
-Code Ich verwende eine Benachrichtigung zu senden:
/* send push notifications */
[self.client publish:nil toChannel:self.senderId mobilePushPayload: @{@"aps": @{@"message":message}}
withCompletion:^(PNPublishStatus *status) {
// Check whether request successfully completed or not.
// if (status.isError) // Handle modification error.
// Check 'category' property to find out possible issue because
// of which request did fail. Request can be resent using: [status retry];
}];
Könnte jemand erklären, und geben Sie mir eine Art, einen Überblick oder wo die verschiedenen Teile des Codes gehört und was ist erforderlich?
ich sehe, danke! Sollte der Aufruf von addPushNotificationsOnChannels auch innerhalb des App-Delegaten erfolgen? – Erik
@Erik sollte diese Methode jedes Mal aufgerufen werden, wenn Sie Gerät Push-Token erhalten. Da nur Applikationsdelegierte darauf direkt antworten, empfehlen wir, dies dort zu tun. –
Ich verstehe. Also, wenn ich eine Push-Benachrichtigung an einen bestimmten Benutzer senden möchte, könnte ich es an einen Kanal mit einer ID senden, die zum Beispiel der ID des Benutzers entspricht? Diese Kanäle sind eine Art Benachrichtigungsgruppen? – Erik