zoukankan      html  css  js  c++  java
  • Tweak和app交互方案【进程通信】

    Core Foundation DEMO:
    Tweak端:        
    1. CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(),
    2.                                         NULL,
    3.                                         &NotificationReceivedCallback,
    4.                                         CFSTR("com.chinapyg.fakecarrier-change"),
    5.                                         NULL,
    6.                                         CFNotificationSuspensionBehaviorCoalesce);
    7. 回调:
    8. static void NotificationReceivedCallback(CFNotificationCenterRef center,
    9.                                          void *observer, CFStringRef name,
    10.                                          const void *object, CFDictionaryRef
    11.                                          userInfo)
    12. {
    13. //....  可以根据 name来判断是何种消息,下面的客户端传了NULL,所以无需判断了,在多种消息的时候需要用到
    14. }
    复制代码


    APP端:
    1.一句代码即可
    1. notify_post("com.chinapyg.fakecarrier-change");
    复制代码


    2.复杂点的
    1. CFStringRef observedObject =
    2.             CFSTR("com.chinapyg.fakecarrier-change");
    3. CFNotificationCenterRef center =
    4.             CFNotificationCenterGetDistributedCenter();
    5. CFNotificationCenterPostNotification(center, NULL,
    6.             observedObject, NULL /* no dictionary */, TRUE);
    复制代码


    ///////////////////////////////////////////////////////////////////////////////////////////
    华丽的分割线
    ///////////////////////////////////////////////////////////////////////////////////////////

    Cocoa DEMO:

    接收端(后台):
    1. NSString *observedObject = @"com.chinapyg.notification";
    2. // 处理单个计算机上不同的进程之间的通知
    3. NSDistributedNotificationCenter *center =
    4.             [NSDistributedNotificationCenter defaultCenter];
    5. [center addObserver: self
    6.             selector: @selector(callbackWithNotification:)
    7.             name: @"PiaoYun Notification"
    8.             object: observedObject];
    9. 回调:
    10. - (void)callbackWithNotification:(NSNotification *)myNotification;
    11. {
    12.         NSLog(@"Notification Received");
    13. }
    复制代码


    发送端(app):
    1. NSString *observedObject = @"com.mycompany.notification";
    2. NSDistributedNotificationCenter *center =
    3.             [NSDistributedNotificationCenter defaultCenter];
    4. [center postNotificationName: @"PiaoYun Notification"
    5.             object: observedObject
    6.             userInfo: nil /* no dictionary */
    7.             deliverImmediately: YES];
    复制代码



    iOS上层接口:
    1. // 处理单进程之间的通知
    2. [[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(callBack) name: @"back" object: nil];
    3. // 回调
    4. - (void)callBack
    5. {        
    6.         NSLog(@"Notification Received");
    7. }
    8. //发出通知        
    9. [[NSNotificationCenter defaultCenter] postNotificationName:@"back" object:self];
    复制代码
  • 相关阅读:
    干货:分布式系统详解
    如果有人问你数据库的原理,叫他看这篇文章
    MySQL的B树索引与索引优化
    优化网站性能必备的6种架构方案,你知道吗?
    【干货】手把手教你搭建一套可自动化构建的微服务框架
    你真的理解微服务架构吗
    Android Activity 半透明效果(Translucent)
    Android DatepickerDialog(日期选择器)的使用
    Android搜索自动提示功能 AutocompleteTextView
    Android动态加载ListView中的Item
  • 原文地址:https://www.cnblogs.com/chen1987lei/p/4240001.html
Copyright © 2011-2022 走看看