使用通过batchImport(iOS)获得的FCM令牌

时间:2016-06-26 18:33:27

标签: ios google-cloud-messaging firebase-cloud-messaging

我正在尝试迁移现有应用以使用FCM。我拿了APNS令牌并将其发送到" batchImport"服务,使用curl:

curl -H "Authorization: key=<auth key>" -H "Content-Type: application/json" -X POST -d "{\"application\": \"com.myco.myapp\", \"sandbox\": false, \"apns_tokens\": [\"410564ffd0aaf91dd06e8ab7b8362238e2c7f1bbd5a520d6afaff38c9b670a90\"] }" https://iid.googleapis.com/iid/v1:batchImport

我收到了#34; registration_token&#34;作为回应。   然后,当我尝试使用该令牌请求推送通知时,它不会到达设备。以下是卷曲:

curl -H "Authorization: key=<Auth key>" -H "Content-Type: application/json" -d "{\"to\":\"<registration_token_from_above>\", \"notification\":{\"body\":\"First\", \"title\":\"Num 1\"}}" -X POST https://fcm.googleapis.com/fcm/send

我也无法发送&#34;通知&#34; Firebase控制台中的工具。

我从头开始创建了第二个项目:https://github.com/firebase/quickstart-ios.git。这个适用于Firebase控制台和curl。

当我使用batchImport服务时,Firebase客户端代码中是否发生了一些神奇的事情?如果是这样,您将如何在世界范围内从不同的服务迁移到FCM?

3 个答案:

答案 0 :(得分:1)

在下游curl命令中添加“priority”:“high”; 另请注意,iOS设备不支持“标题”。

答案 1 :(得分:0)

它是如何运作的?

在Firebase文档中找到了这个:

  

FCM实施包括您环境中的应用服务器   通过HTTP或XMPP协议与客户端应用程序交互FCM。   此外,FCM包括   Notifications   控制台,可用于向客户端应用程序发送通知。

     

Firebase通知基于Firebase云消息传递和共享   用于客户端开发的相同FCM SDK。用于测试或发送   具有强大内置定位功能的营销或参与消息   分析,您可以使用通知。对于更多的部署   复杂的消息传递要求,FCM是正确的选择。

您将如何从不同的服务迁移到FCM?

文档中有完整的Migration Guide for iOS

将您的GCM项目导入为Firebase项目

  

1.在Firebase控制台中,选择导入Google Project。

     

2.从现有项目列表中选择您的GCM项目,然后选择添加Firebase。

     

3.在Firebase欢迎屏幕中,选择将Firebase添加到您的iOS应用程序。

     

4.提供您的软件包名称和可选的App Store ID,然后选择Add App。您的Firebase应用的新GoogleServices-info.plist文件是   下载。

     

5.选择继续并按照详细说明为您的应用创建xcworkspace文件,并在启动时连接到Firebase。

答案 2 :(得分:0)

使用使用batchImport创建的令牌发送通知的另一个可能问题:请注意正确设置CPTXYAxis *rightY = [[CPTXYAxis alloc] init]; // Configure the right y-axis rightY.labelingPolicy = CPTAxisLabelingPolicyNone; rightY.title = NSLocalizedStringFromTable(@"Time (Sec)", @"Scores", @"Time in seconds label for scores"); rightY.titleTextStyle = axisTitleStyle; rightY.titleOffset = 23.0f; rightY.axisLineStyle = axisLineStyle; rightY.tickDirection = CPTSignPositive; rightY.labelingPolicy = CPTAxisLabelingPolicyNone; rightY.labelOffset = 4.0f; rightY.majorTickLineStyle = axisLineStyle; rightY.majorTickLength = -5.0f; rightY.minorTickLength = -2.5f; rightY.axisConstraints = [CPTConstraints constraintWithUpperOffset:0]; rightY.plotSpace = rightAxisPlotSpace; NSInteger rightMajorIncrement = 1; NSInteger rightMinorIncrement = 1; CGFloat rightYMax = 12; // should determine dynamically based on max price NSMutableSet *rightYLabels = [NSMutableSet set]; NSMutableSet *rightYMajorLocations = [NSMutableSet set]; NSMutableSet *rightYMinorLocations = [NSMutableSet set]; for (NSInteger j = rightMinorIncrement; j <= rightYMax; j += rightMinorIncrement) { NSUInteger mod = j % rightMajorIncrement; if (mod == 0) { CPTAxisLabel *label = [[CPTAxisLabel alloc] initWithText:[NSNumberFormatter localizedStringFromNumber:@(13 - j) numberStyle:NSNumberFormatterNoStyle] textStyle:rightY.labelTextStyle]; NSDecimal rightLocation = CPTDecimalFromInteger(j); label.tickLocation = rightLocation; label.offset = 2; if (label) { [rightYLabels addObject:label]; } [rightYMajorLocations addObject:[NSDecimalNumber decimalNumberWithDecimal:rightLocation]]; } else { [rightYMinorLocations addObject:[NSDecimalNumber decimalNumberWithDecimal:CPTDecimalFromInteger(j)]]; } } rightY.axisLabels = rightYLabels; 参数。我的通知被各种奇怪错误拒绝 - 无效令牌,令牌未注册,无效的APNS凭据 - 直到我设置sandbox