美文网首页
ios7远程推送以及静默推送

ios7远程推送以及静默推送

作者: 小故 | 来源:发表于2016-08-11 14:44 被阅读304次

    没有开启了Background Modes 里面的Remote notifications

    • 当App没有启动的时候,收到通知时,系统会弹出通知提示框, 如果用户点击通知,程序会自动启动,但是- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo函数并不会被调用,这个时候需要判断- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions中的launchOptionsUIApplicationLaunchOptionsRemoteNotificationKey 来获取Apns信息,然后再做进一步的处理;
    • 如果App是在后台的话,收到通知时,系统会弹出通知提示框,如果用户点击通知,系统会把程序唤醒到前台,然后- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 会被调用;
    • 如果App是在前台运行的时候收到通知的话, 系统不会自动弹出通知提示框, 需要自己在- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo里面处理, 比如显示一个alertview或者发送 Local Notification;
    注意

    如果同时实现了- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo, 只有前者会被调用.


    开启了Background Modes 里面的Remote notifications

    • 如果返回的apns payload 结构是silent notification的话, 不管App是在后台,还是在前台,(如果app在后台被kill掉了,一样不会调用) 系统都不会自动弹框,同时(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo方法会被调用, 如果App是在后台的suspend的话,会被唤醒到后台

    • 如果返回的apns payload结构是普通的,流程和上面没有开启 Background Modes是一致的(APP不会被唤醒);

    静默通知 payload配置

    • 不能加alert,sound这些,;
    • content-avaliable : 1;
    • 可以添加自定义的key ,否则发静默通知也没有用;
    • aps { content-available: 1 yourkey: {...} }

    相关文章

      网友评论

          本文标题:ios7远程推送以及静默推送

          本文链接:https://www.haomeiwen.com/subject/zttssttx.html