推广

面试总结一

iseeyu2年前 (2024-02-22)推广129

image

在Cookie目录下两个文件比较重要
Cookie.binarycookies
<appid>.binarycookies
两者的区别是<appid>.binarycookies是NSHTTPCookieStorag文件对象
Cookie.binarycookies是WKWebView实例化对象

这就是WKWebview 和 NSHTTPCookieStorage 的原因——因为被保存在不同的文件当中

WKWebview Cookie 如何工作的

1.当webView loadRequest或者302或者webView加载完毕,触发了ajax请求时,WKWebView所需的Cookie会去Cookie.binarycookies里读取本域名下的Cookie,加上WKProcessPool持有的Cookie一起作为request头里的Cookie数据

如何传递cookie

let cooki = "document.cookie = '这里是你需要的cookie值'
let userContentController = WKUserContentController()       
let userScript = WKUserScript(source: cooki, injectionTime:WKUserScriptInjectionTime.atDocumentStart, forMainFrameOnly: false)    

userContentController.addUserScript(userScript)       

let config = WKWebViewConfiguration()       
config.userContentController = userContentController    
   
var url = URLRequest(url: URL(string: sqlUrl)!, cachePolicy: URLRequest.CachePolicy.useProtocolCachePolicy, timeoutInterval: 20)       

webV = WKWebView(frame: UIScreen.main.bounds, configuration: config)

cookie

第一次拿到cookie

NSString *cookieStr = [self setupCookie];  //保持APP登录状态同步到web
WKUserScript *cookieScript = [[WKUserScript alloc] initWithSource:cookieStr injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:NO];
[configuration.userContentController addUserScript:cookieScript];
- (NSString *)setupCookie
{     NSMutableDictionary *cookieDic = [NSMutableDictionary dictionary];
      NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
      NSString *currentHostUrl = [IQHAPIService apiBaseUrlString];;
      NSString *hostDomin = [currentHostUrl stringByReplacingOccurrencesOfString:@"http://mobile" withString:@""];
      for (NSHTTPCookie *cookie in [cookieJar cookies]) {
          if ([hostDomin isEqualToString:cookie.domain]) {
             [cookieDic setObject:cookie.value forKey:cookie.name];
          }
      }
      NSString *sessionType = @"APPSESSIONID";
      NSString *cookieStr = @"";
      for (NSString *key in cookieDic) {
          if([key isEqualToString:@"SESSION"]){
              NSString *appendString = [NSString stringWithFormat:@"'%@=%@;path=/';",sessionType,[cookieDic valueForKey:key]];
              cookieStr = [NSString stringWithFormat:@"%@document.cookie=%@",cookieStr,appendString];
          }
      }
      return cookieStr;
}

5.远程推送原理

Provider是自己程序的后台服务器,APNS是Apple Push Notification Server的缩写,苹果推送服务器
分为三个阶段
1.应用程序的服务端把要发送的信息,目的iPhone的标识打包,发送给APNS
2.APNS在自身的已注册Push服务的iPhone列表中,查找相应标识的iPhone,并把消息发送到iPhone
3.iPhone把发来的消息传递给相应的应用程序,并且按照设定弹出Push通知

APNS推送通知的详细工作流程

1.应用程序注册APNS消息推送
2.iOS从APNS获取deviceToken 应用程序接受deviceToken
3.应用程序将device token发送给程序的PUSH服务器程序
4.服务端程序向APNS服务发送消息
5.APNS服务奖消息发送给iPhone应用程序

由于直接生成的证书windows系统是不识别的,所以我们需要生成一个后缀为pem的带证书带秘钥的文件

1.把.cer的ssl证书转换为.pem文件
openssl x509 -in aps_development.cer -inform der -out PushChatCert.pem
2.把私钥Push.p12证书转换为.pem文件
openssl pkcs12 -nocerts -out PushChatKey.pem -in Push.p12
3.把生成的两个pem文件再生成一个pem文件 把证书和私钥整合到一个文件里
cat PushChatCert.pem PushChatKey.pem > ck.pem
4.测试证书是否工作
telnet gateway.sandbox.push.apple.com 2195
5.使用SSL证书和私钥来设置一个安全的链接去链接苹果服务器
openssl s_client -connect gateway.sandbox.push.apple.com:2195 -cert PushChatCert.pem -key PushChatKey.pem
6.建立推送
在AppDelegate里didFinishLaunchingWithOptions函数里写

  • (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions
    {
    //推送的形式:标记,声音,提示
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeBadge |UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert];
    return YES;
    }

  • (void)application:(UIApplication *)applicationdidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)pToken {
    NSLog(@”regisger success:%@”,pToken);
    //注册成功,将deviceToken保存到应用服务器数据库中
    }

  • (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
    // 处理推送消息
    NSLog(@”userinfo:%@”,userInfo);

    NSLog(@”收到推送消息:%@”,[[userInfo objectForKey:@”aps”] objectForKey:@”alert”]);
    }

  • (void)application:(UIApplication *)applicationdidFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@”Registfail%@”,error);
    }

扫描二维码推送至手机访问。

版权声明:本文由西安泽虎代运营发布,如需转载请注明出处。

转载请注明出处https://www.0291.com.cn/post/55933.html

相关文章

重磅:终于来了,财富管理行业的规范标准

重磅:终于来了,财富管理行业的规范标准

图|Pixabay 2021年12月29日,中国人民银行正式发布 《金融从业规范 财富管理》 (下文简称《标准》),从服务、职业能力、职业道德与行为准则、职业能力水平评价等几个方面对财富管理从业者的执业标准进行了详细的界定。 完整版报告请点击左下角「阅读原文」下载 财富管理...

网站权重降低受哪些因素影响。

网站权重降低受哪些因素影响。

你有没有在优化网站时遇到过网站流量下降的情况?那么你知道这些因素影响网站流量下降的原因吗?下面请跟随重蔚自留地的小编来了解一下网站流量减少的原因。 一、网站内容质量不好 网站优化的文章质量也是非常重要的,这个网站经常出现的高质量的文章,百度搜索引擎爬行网站的频率会慢慢改善,流量将会慢慢提高,相反...

如何看待B站运营在采访中爆料蔡徐坤事件和大碗宽面事件是 ...

蔡徐坤的鬼畜恶意真的太大了,我真的从来没见过这么大恶意的鬼畜,即便是要求下属把手放油锅的sb领导黄晓明被做成鬼畜都没有p鬼图p丑图,还有娜扎穷哈杨超越吴亦凡也是一直美美美帅帅帅的多以调侃为主,cxk的鬼畜不仅p鬼图p丑图把人的头按在动物身上,最近还有一个圣诞夜在地上爬的,还...

【市场营销论文】浅析市场营销对企业销售的作用

【市场营销论文】浅析市场营销对企业销售的作用

 摘要:是企业销售的一种方法, 也是能从本质上提高企业销售效率的一种实践方向。相比于直接的企业销售, 市场营销往往具备更高的规划性和科学性, 而且拥有更高的活力。在新时期的企业发展当中, 企业要想获得更高的经济效益, 必然需要分析市场营销与企业销售之间的联系, 展开对基础...

我来教你外贸网站推广的7个SEO技术技巧。

我来教你外贸网站推广的7个SEO技术技巧。

1、HTTP/HTTPS 电商网站必然要有一个安全的服务器。为什么?因为你的网站用户输入的是敏感信息,比如信用卡号码、用户名、密码和住址等。使用SSL网络安全协议,你就激活了浏览器与服务器之间的安全连接,保护买家信息。 网站分两种情况: 一种是HTTP类型的网站。该类型常用于用户...

如何查找竞争对手渠道营销策略?

如何查找竞争对手渠道营销策略?

嗨,大家好,我是骁君。《红人述》开通已经有一个月的时间了,在过去的中,我们介绍到了一部分主流国家的头部媒体合作方向,也对渠道的一些策略进行了分析。正如我们的公众号简介一样,我们希望在渠道营销的实操和策略领域给到大家一些帮助。一方面,借助我们多年的海外合作经验,把不同国家值得...

现在,非常期待与您的又一次邂逅

我们努力让每一部企业宣传片和抖音短视频成为商业大片