Ich glaube nicht, Firebase ist derzeit ausgestattet, um dieses Szenario zu behandeln. Sie benötigen etwas Sever Side-Code, um damit umzugehen. Entweder man könnte Hosting erhalten und wie ein PHP-Endpunkt machen, was verwendet wird, kann die
[[FIRMessaging message]sendMessage:(nonnull NSDictionary *)message
to:(nonnull NSString *)receiver
withMessageID:(nonnull NSString *)messageID
timeToLive:(int64_t)ttl;
Code zu integrieren und damit es funktioniert, oder Sie brauchen, um einen anderen Dienst zu finden, die als Backend dienen kann.
https://techcrunch.com/2016/02/02/batch-now-integrates-with-firebase-to-create-a-parse-alternative/
Diese Batch.com Unternehmen scheint die beste Lösung zu sein, die ich bisher gefunden habe. Ich war in der Lage, ein Benutzergerät senden eine Json-Payload zu einem Endpunkt auf ihrem Server, der dann angepasste Push-Benachrichtigungen an bestimmte Zielgeräte sendet. Es scheint, als wäre Batch eine Push-Notification-Firma, und es scheint, als ob der kostenlose Basisplan gut genug ist, um das zu bewältigen, was Sie brauchen, silmar, wie Parse funktioniert.
Hier ist der eigentliche Code, den ich für das Senden der Push-Benachrichtigungen Objective C geschrieben hat. (Es gibt auch ein Swift 2 und Swift 3 Beispiel, das Sie von Batch herunterladen können.com)
NSURL *theURL = [NSURL URLWithString:[NSString stringWithFormat:@"https://api.batch.com/1.1/(your API code here)/transactional/send"]];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:theURL cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:30.0f];
[theRequest setValue:@"(your other API key here" forHTTPHeaderField:@"X-Authorization"];
NSDictionary *messageDict = [[NSDictionary alloc]initWithObjectsAndKeys:@"Hey This is a Push!", @"title", @"But it's a friendly push. Like the kind of push friends do to each other.",@"body", nil];
NSArray *recipientsArray = [[NSArray alloc]initWithArray:someMutableArrayThatHasUsersFirebaseTokens];
NSDictionary *recipientsDict = [[NSDictionary alloc]initWithObjectsAndKeys:recipientsArray, @"custom_ids", nil];
NSDictionary *gistDict = @{@"group_id":@"just some name you make up for this pushes category that doesn't matter",@"recipients":recipientsDict,@"message":messageDict, @"sandbox":@YES};
NSError *jsonError;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:gistDict options:NSJSONWritingPrettyPrinted error:&jsonError];
[theRequest setHTTPMethod:@"POST"];
[theRequest setHTTPBody:jsonData];
NSOperationQueue *queue1 = [[NSOperationQueue alloc] init];
[NSURLConnection sendAsynchronousRequest:theRequest queue:queue1 completionHandler:^(NSURLResponse *response, NSData *POSTReply, NSError *error){
if ([POSTReply length] >0 && error == nil){
dispatch_async(dispatch_get_main_queue(), ^{
NSString *theReply = [[NSString alloc] initWithBytes:[POSTReply bytes] length:[POSTReply length] encoding:NSASCIIStringEncoding];
NSLog(@"BATCH PUSH FINISHED:::%@", theReply);
});
}else {
NSLog(@"BATCH PUSH ERROR!!!:::%@", error);
}
}];
Batch war ziemlich einfach mit Cocoa Pods zu installieren.
habe ich auch diesen Code es zum Laufen zu bringen:
In AppDelegate:
@import Batch
In didFinishLaunching:
[Batch startWithAPIKey:@"(your api key)"]; // dev
[BatchPush registerForRemoteNotifications];
dann später in AppDelegate:
- (void)tokenRefreshNotification:(NSNotification *)notification {
// Note that this callback will be fired everytime a new token is generated, including the first
// time. So if you need to retrieve the token as soon as it is available this is where that
// should be done.
NSString *refreshedToken = [[FIRInstanceID instanceID] token];
NSLog(@"InstanceID token: %@", refreshedToken);
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject:refreshedToken forKey:@"pushKey"];
[defaults synchronize];
BatchUserDataEditor *editor = [BatchUser editor];
[editor setIdentifier:refreshedToken]; // Set to `nil` if you want to remove the identifier.
[editor save];
[self connectToFcm];
}
So wie Sie es tun, abgesehen von den Setup- und Installationsarbeiten, die auf der Website von Batch.com erklärt werden.
Sobald Sie Ihr Token von Feuerbasis zu erhalten, registrieren Sie im Grunde auf Batch mit
BatchUserDataEditor *editor = [BatchUser editor];
[editor setIdentifier:refreshedToken];
[editor save];
in App Delegierter. Wenn Sie möchten, dass Ihr Benutzer Gerät1 einen Push an ein anderes Gerät2 sendet, vorausgesetzt, Sie haben die benutzerdefinierte ID von Gerät1 irgendwie an device2 gesendet, können Sie diese benutzerdefinierte ID verwenden, um die Push-Benachrichtigungs-Payload an die API von Batch.com zu senden, und Batch verarbeitet den Server Side-Zeug zu Apple APN und Ihre Push-Benachrichtigungen erscheinen auf device2.
Sie haben den Fluss korrekt, um Gerät an Gerät zu senden. Senden Sie Upstream an Ihren Server, dann sendet der Server Downstream an andere Geräte. –