我有一个尚未发布的正在进行中的应用程序,除了我的后端之外,我还依赖 Parse 进行推送,但是由于 Parse 正在关闭,因此使用 Parse 发布它然后再更改是没有意义的。
无论如何,现在我转移到了 iOS 的 GCM,从我在下面看到的代码中,您只需注册推送通知(正常的 iOS 方式),然后一旦您获得令牌,您就可以使用 GCM 注册它(就像以前使用 Parse 一样),但最大的区别是,当我强制关闭应用程序时,从未收到推送通知,但是当我有 Parse 并强制关闭应用程序时,我发送推送通知我仍然收到它,查看 Parse 的开源 SDK 下的内容(我无法理解所有内容,但我发现没有使用 PushKit),在网络上的几个类似问题中建议使用 Pushkit。但是对于如何实现这一点没有明确的解决方案。
这是我正在做的注册推送:
// Register for remote notifications
UIUserNotificationType allNotificationTypes =
(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge);
UIUserNotificationSettings *settings =
[UIUserNotificationSettings settingsForTypes:allNotificationTypes categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:settings];
[[UIApplication sharedApplication] registerForRemoteNotifications];
然后:
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
NSLog(@"Application registered for remote notification");
GGLInstanceIDConfig *instanceIDConfig = [GGLInstanceIDConfig defaultConfig];
instanceIDConfig.delegate = self;
[[GGLInstanceID sharedInstance] startWithConfig:instanceIDConfig];
_registrationOptions = @{kGGLInstanceIDRegisterAPNSOption:deviceToken,
kGGLInstanceIDAPNSServerTypeSandboxOption:@YES};
[[GGLInstanceID sharedInstance] tokenWithAuthorizedEntity:_gcmSenderID
scope:kGGLInstanceIDScopeGCM
options:_registrationOptions
handler:_registrationHandler];
NSLog(@"This is device token%@", deviceToken);
}
这是我发送的推送通知:
curl --header 'Content-Type:application/json' --header 'Authorization: key=My-Google-Key' \
https://android.googleapis.com/gcm/send \
-d '{"to": "/topics/test","notification":{"sound": "default","badge": "1","title": "test title","body": "Test body", "dl": "myscheme://section/e5c7f33080940a95b94b50941e667da6", "content_available":true}, "data":{"alert":"breaking title","title":"breaking title","dl": "myscheme://section/e5c7f33080940a95b94b50941e667da6"", "content_available":true}}'
总结一下,如果应用程序根本没有运行,我需要一种方法来接收推送通知