当前位置:  开发笔记 > Android > 正文

使用GCM关闭应用程序时在iOS中接收推送通知

如何解决《使用GCM关闭应用程序时在iOS中接收推送通知》经验,为你挑选了1个好方法。

我的应用使用GCM接收推送通知.我的Android应用程序完美的工作,当我完全关闭应用程序,我仍然收到通知,但如果我对我的iOS版本做同样的事情,我没有收到任何东西.

请注意,这当然是在应用程序首次注册然后应用程序关闭之后.我找不到很多关于此的信息.有些帖子说你不能这样做.但Facebook和Facebook的使者都喜欢这样做.有谁知道这是怎么做的?

这是我的

DidReceiveRemoteNotification method which is taken from the GCM documentation

// [START ack_message_reception]
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{
    NSLog(@"Notification received: %@", userInfo);
    // This works only if the app started the GCM service
    [[GCMService sharedInstance] appDidReceiveMessage:userInfo];
    // Handle the received message
    // [START_EXCLUDE]
    [[NSNotificationCenter defaultCenter] postNotificationName:_messageKey
                                                        object:nil
                                                      userInfo:userInfo];
    // [END_EXCLUDE]
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))handler 
{
    NSLog(@"Notification received: %@", userInfo);
    // This works only if the app started the GCM service
    [[GCMService sharedInstance] appDidReceiveMessage:userInfo];
    // Handle the received message
    // Invoke the completion handler passing the appropriate UIBackgroundFetchResult value
    // [START_EXCLUDE]
    [[NSNotificationCenter defaultCenter] postNotificationName:_messageKey
                                                        object:nil
                                                      userInfo:userInfo];
    handler(UIBackgroundFetchResultNoData);
    // [END_EXCLUDE]
}
// [END ack_message_reception]

发送的有效负载看起来像这样

$payload =  array('registration_ids' => $Regids,
                  'content_available' => false,
                  'notification' => array("body"=> $_POST['message'],
                                          "sound" => "default",
                                          'badge' => '1'
                                          )
                  );

请注意,如果应用程序位于后台,则此方法有效



1> Rob85..:

我设法通过将此添加到我的工资负荷来实现这一点

"priority" => "high"

也许有人可以评论为什么这有效,因为我不知道

推荐阅读
李桂平2402851397
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有