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];

复制代码

Tweak和app交互方案【进程通信】的更多相关文章

  1. 微端游戏启动器LAUNCHER的制作之MFC版一(序和进程通信)

    额...刚开始信誓旦旦说要写launcher制作的博客,还没写完就被抛到脑后了真是没毅力.最近把之前写的wpf的launcher改成了mfc版,遇到很多问题,写了三个星期才写完,好好记录一下吧.我也想 ...

  2. 跨进程通信之Messenger

    1.简介 Messenger,顾名思义即为信使,通过它可以在不同进程中传递Message对象,通过在Message中放入我们需要的入局,就可以轻松实现数据的跨进程传递了.Messenger是一种轻量级 ...

  3. 安卓中不同APP之间的消息通信

    昨天在腾讯实习生招聘初试面试时面试官问道我关于两个APP之间相互通信的方式,当时自己回道到了contentProvider与BroadcastReceiver.但他接着问还有没有其它的方式,我跟他说可 ...

  4. 【朝花夕拾】Android性能篇之(七)Android跨进程通信篇

    前言 只要是面试高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点之一.Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Andro ...

  5. Android-Messenger跨进程通信

    http://blog.csdn.net/lmj623565791/article/details/47017485 一.概述 我们可以在客户端发送一个Message给服务端,在服务端的handler ...

  6. AIDL/IPC Android AIDL/IPC 进程通信机制——超具体解说及使用方法案例剖析(播放器)

    首先引申下AIDL.什么是AIDL呢?IPC? ------ Designing a Remote Interface Using AIDL 通常情况下,我们在同一进程内会使用Binder.Broad ...

  7. 详解 CmProcess 跨进程通信的实现

    CmProcess 是 Android 一个跨进程通信框架,整体代码比较简单,总共 20 多个类,能够很好的便于我们去了解跨进程实现的原理. 个人猜测 CmProcess 也是借鉴了 VirtualA ...

  8. Unix 进程通信基本概念

    一:通信分为两类: 控制信息的传递: 低级通信 大批量数据的传递: 高级通信 二:基本的通信方式 (a)主从式通信: 通信的双方存在一种隶属关系, 其中主进程是通信过程的控制者,而从进程是通信过程的从 ...

  9. android92 aidl远程进程通信

    05项目RemoteService.java package com.itheima.remoteservice; //05项目 import com.itheima.remoteservice.Pu ...

随机推荐

  1. Windows应用程序的VC链接器设置

    Windows应用程序的VC链接器设置 /*转载请注明出自 听风独奏 www.GbcDbj.com */ Windows应用程序分为GUI(Graphical User Interface)和CUI( ...

  2. LR脚本记录

    1. 打印出: the value  is+"参数值" lr_output_message("the value  is",lr_eval_string(&qu ...

  3. 虚拟机Tools工具安装过程

    1.选择:“虚拟机” >>> “安装VMware Tools” 在主机上,从 Workstation Pro 菜单栏中选择虚拟机 > 安装 VMware Tools. 如果安装 ...

  4. SpringBoot入门(1)

    一.初始 ①.首先还是要创建一个maven工程 ②.然后编写Controller 让SpringBoot跑起来并不需要太多的代码,就能实现了我们平时要配置很多的功能,这是怎么做到的呢?我们就下面一个入 ...

  5. C++ - 常用的标准库函数

      写在前面 C++是一门博大精深的语言,也是最难学的一门编程语言,每一位励志学好C++的程序员都需要从基本功开始,稳扎稳打. 自从1998年C++ standard定案以后,C++程序库便有了大幅扩 ...

  6. docker redis

    https://www.cnblogs.com/cgpei/p/7151612.html 重启docker >systmctl restart docker >mkdir -p ~/red ...

  7. Maven(六) eclipse 使用Maven deploy命令部署构建到Nexus

    转载于:http://blog.csdn.net/jun55xiu/article/details/43051627 1  应用场景:SYS-UTIL(系统工具)项目部署.构建成JAR包(SYS-UT ...

  8. JSTL的基本使用

    <body> <% request.setAttribute("name", "lisi123"); request.setAttribute ...

  9. 116. Populating Next Right Pointers in Each Node (Tree; WFS)

    Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...

  10. assetBundle打包脚本与LUA

    AssetBundles与脚本 所有Unity的AssetBundle,无论是从本地获取 还是www,或者打包整个场景.物体上的脚本都不会被编译.所以AssetBundle打包的时候即使物体上有脚本. ...