1. <tr id='bkkze'><strong id='bkkze'></strong><small id='bkkze'></small><button id='bkkze'></button><li id='bkkze'><noscript id='bkkze'><big id='bkkze'></big><dt id='bkkze'></dt></noscript></li></tr><ol id='bkkze'><table id='bkkze'><blockquote id='bkkze'><tbody id='bkkze'></tbody></blockquote></table></ol><u id='bkkze'></u><kbd id='bkkze'><kbd id='bkkze'></kbd></kbd>

      <i id='bkkze'><div id='bkkze'><ins id='bkkze'></ins></div></i>
      <i id='bkkze'></i>
      <acronym id='bkkze'><em id='bkkze'></em><td id='bkkze'><div id='bkkze'></div></td></acronym><address id='bkkze'><big id='bkkze'><big id='bkkze'></big><legend id='bkkze'></legend></big></address>

      <ins id='bkkze'></ins>

      <code id='bkkze'><strong id='bkkze'></strong></code>
        1. <span id='bkkze'></span>
        2. <fieldset id='bkkze'></fieldset><dl id='bkkze'></dl>

          iOS推送实验室-做之前看看我少走弯路

          • 时间:
          • 浏览:92
          • 来源:124软件资讯网

             写作缘故原由:网上看了许多推送文章都没有完善的解答我的疑惑;主要有以下两点  ,1:推送来了我点击应用图标进入应用怎么取到推送新闻  ?2:怎么保证一定能够获取到远程推送的新闻  ,由于有的远程推送新闻很主要;这里主要验证会在哪几个回调收到内容 ,行为(手机顶部有新闻弹出我叫做行为)是怎样的

              实在收到推送到进入应用有这么5种场景  ,1:法式运行在前台来推送了  ,2:法式运行在后台来推送了  ,我点击推送新闻进入法式  ,3:法式运行在后台来推送了  ,我点击应用图标进入法式  ,4:法式没运行来推送了 ,我点击推送新闻进入法式  ,5:法式没运行来推送了  ,我点击应用图标进入法式

              讲推送的文章着实是太多了 ,我就不烦琐原理(http://www.jianshu.com/p/ace1b422bad4)和设置(http://www.jianshu.com/p/db9c95c9e29f)了;我直接拿我的项目(项目最低适配iOS8)来从以下三个方面回覆上面5种情形下会在哪些回调收到内容  ,行为是怎样的

            一:当地推送

            我们从UIApplicationDelegate中找一找哪些是和当地推送相关的回调 ,可以发现有下面这三个;假设现在你不知道B和C什么意思 ,我也是后面才想起来的(有点痴呆了)  ,不外都写了这么多了就不想删除了:

            - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification  {}//A回调
            (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification completionHandler:(void(^)())completionHandler {}//B回调
            - (void)application:(UIApplication *)application handleActionWithIdentifier:(nullable NSString *)identifier forLocalNotification:(UILocalNotification *)notification withResponseInfo:(NSDictionary *)responseInfo completionHandler:(void(^)())completionHandler {}//C回调

              仔细的小同伴可能说了  ,A回调后面不是说让你用XXX回调取代吗  ?哥们 ,这个函数有用期是iOSx-iOS10 ,你慌啥啊  ,等iOS11出来了再换呗;然后B和C形貌一样说明功效一样  ,我们这里使用B  ,C是iOS9-iOS10  ,B是iOS8-iOS10我们要适配版本;这里我们还不知道B和C是什么时间挪用  ,没关系我们逐步来做实验  ,我们把A和B写到AppDelegate.m中;然后我们划分来举行试验

            1:A和B回调都写上

            1)法式运行在前台来当地推送了

              我在我项目中建立一个按钮  ,给按钮响应添加一个只触发一次的当地推送(代码就不写了  ,都市写);在这两个回调中打上断点  ,现在我们运行法式点击按钮然后让法式运行到前台 ,逐步等候当地推送触发(看点网站)~~~

              断点如约执行  ,先是执行了A回调  ,我们XCode下方打印一下notification看看是什么鬼:

            {fire date = 2016年10月24日 星期一 中国尺度时间 下战书4:03:08, time zone = Asia/Shanghai (GMT+8) offset 28800, repeat interval = 0, repeat count = UILocalNotificationInfiniteRepeatCount, next fire date = (null), user info = {
            action = GENERAL;
            "company_no" = 10295;
            content = "\U4e8b\U52a1\U63d0\U9192: boot1";
            "from_user_no" = 21175;
            "target_id" = 15812;
            time = 1477296248000;
            "to_user_no" = 21175;
            type = CALENDARTIP;
            unread = 1;
            }}

              内容或许是触发这次推送的时间(fire date)+时区(time zone)+距离周期(repeat interval)+重复次数(repeat count)+下次触发时间(next fire date)+添加到当地推送的内容(user info) ,好了没有什么问题  ,然后我们继续执行法式  ,B怎么不执行了  ?我擦  ,我们回过头看看B回调上面的注释:

            // Called when your app has been activated by the user selecting an action from a local notification.

            // A nil action identifier indicates the default action.

            // You should call the completion handler as soon as you've finished handling the action.


              依我考过英语四级(只是考过  ,没有考过)的水平翻译一下  ,这个回调被触发当用户从当地通知点击一个action  ,一个不为nil的action指示默认的action  ,你应该写一下完成回调当你握住了这个action(我已经被我的英语水平屈服了);不外意思或许懂了是从通知栏点击某一项激活项目  ,那么啥算激活项目  ?后台进入前台照旧被杀死的项目启动了 ?不管了  ,结论很主要: