飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4688|回复: 4

[iOS] Tweak和app交互方案【进程通信】

[复制链接]
  • TA的每日心情
    开心
    2016-6-16 14:07
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    发表于 2014-9-21 14:47:35 | 显示全部楼层 |阅读模式
    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];
    复制代码


    官方使用说明见:https://developer.apple.com/library/mac/documentation/userexperience/Conceptual/PreferencePanes/Tasks/Communication.html




    评分

    参与人数 3威望 +32 飘云币 +12 收起 理由
    beijingren + 4 + 4 神马都是浮云
    Nisy + 20 赞一个!
    lucky_789 + 8 + 8 很给力!

    查看全部评分

    PYG19周年生日快乐!

    该用户从未签到

    发表于 2015-2-8 16:31:55 | 显示全部楼层
    不错看看 楼主幸苦了
    PYG19周年生日快乐!
  • TA的每日心情
    无聊
    2016-1-18 10:29
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2015-4-3 22:02:20 | 显示全部楼层
    darwin notify运用甚广,apple watch通知也可用这个。
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-6-25 23:20
  • 签到天数: 4 天

    [LV.2]偶尔看看I

    发表于 2016-12-9 02:05:22 | 显示全部楼层
    这个方法好不能传参数过去
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2021-1-3 16:09
  • 签到天数: 16 天

    [LV.4]偶尔看看III

    发表于 2017-1-8 23:34:14 | 显示全部楼层
    学习了! 感谢飘云大神
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表