Apple-Watch开发1
Communicating between the iOS app and the Watch Extension
There are four scenarios where an app and an extension might wish to communicate:
- Watch extension to suspended/terminated iOS app - use +[WKInterfaceDevice openParentApplication:reply:] if you need to "wake up" your iOS app. If you simply need to leave data in a place for your iOS app to find it later, then you should write it into the shared group container and have your iOS app consult it when it next needs the information.
- Watch extension to running iOS app - use either +[WKInterfaceDevice openParentApplication:reply:] or the Darwin notification center.
- iOS app to suspended/terminated Watch extension - Since the Watch extension is only launched in reaction to your Watch app being launched on the Apple Watch, an iOS app cannot launch its corresponding Watch extension. Instead, the app should write whatever data it wants to send to the Watch extension into the shared group container, and the extension should consult it when it next needs the information.
- iOS app to to running Watch extension - If your iOS app received the -[<UIApplicationDelegate> application:handleWatchKitExtensionRequest:reply:] message, it should use the system-provided reply block to convey information back to the extension. Otherwise you may use the Darwin notification center to pass information back to the extension.
More information on the Darwin notification center can be found in the Documentation.
watchos2 录音功能实现
[self presentAudioRecordingControllerWithOutputURL:fileUrl
preset:WKAudioRecordingPresetWideBandSpeech
maximumDuration:5.0
actionTitle:@"Some Title"
completion:^(BOOL didSave, NSError * __nullable error) {
NSLog(@"didSave:%d, error:%@", didSave, error);
}];
The extension is not automatically notified of changes to the shared user defaults made by the iOS app, and vice versa. If you would like to be notified, you can do so manually by using the Darwin notification center.
auto engine = LuaEngine::getInstance();
ScriptEngineManager::getInstance()->setScriptEngine(engine);
lua_State* L = engine->getLuaStack()->getLuaState();
int isOpen = luaL_dofile(L, "/Users/game-netease/svn/gzhuabo/Menghuan/src/operation.lua");
if(isOpen != 0)
{
const char* iResult = lua_tostring(L, -1);
NSLog(@"Open Lua Error: %i, %s", isOpen, iResult);
handler(@{@"glanceInfo": @"ERROR"});
}
else
{
lua_getglobal(L, "getGlance");
/*
lua_call
第一个参数:函数的参数个数
第二个参数:函数返回值个数
*/
lua_call(L, 0, 1);
const char* iResult = lua_tostring(L, -1);
NSString *str = [NSString stringWithUTF8String:iResult];
NSLog(@"%@", str);
handler(@{@"glanceInfo": str});
}
NSArray *array = (NSArray *)context;
for (id object in array) {
Activity *obj = (Activity *)[NSKeyedUnarchiver unarchiveObjectWithData: object];
NSLog(@"name: %@, type: %@", obj.m_name, obj.m_type);
NSLog(@"time: %@", obj.m_time);
NSLog(@"donetime: %@", obj.m_doneTime);
}
//活动
@interface Activity : NSObject
@property(nonatomic, retain) NSString *m_name; //名称
@property(nonatomic, retain) NSString *m_type; //日常活动、限时活动、节日活动
@property(nonatomic, retain) NSNumber *m_doneTime; //已经完成次数
@property(nonatomic, retain) NSNumber *m_time; //每日次数
@property(nonatomic, retain) NSNumber *m_doneActiveness; //已经完成活跃度
@property(nonatomic, retain) NSNumber *m_activeness; //每日活跃度
@end #endif
#import <Foundation/Foundation.h>
#import "Activity.h" @implementation Activity
- (void) encodeWithCoder : (NSCoder *)encode {
[encode encodeObject:self.m_name forKey:@"name"];
[encode encodeObject:self.m_type forKey:@"type"];
[encode encodeObject:self.m_doneTime forKey:@"doneTime"];
[encode encodeObject:self.m_time forKey:@"time"];
[encode encodeObject:self.m_doneActiveness forKey:@"doneActiveness"];
[encode encodeObject:self.m_activeness forKey:@"activeness"];
} - (id)initWithCoder:(NSCoder *)aDecoder {
if(self = [super init])
{
self.m_name = [aDecoder decodeObjectForKey:@"name"];
self.m_type = [aDecoder decodeObjectForKey:@"type"];
self.m_doneTime = [aDecoder decodeObjectForKey:@"doneTime"];
self.m_time = [aDecoder decodeObjectForKey:@"time"];
self.m_doneActiveness = [aDecoder decodeObjectForKey:@"doneActiveness"];
self.m_activeness = [aDecoder decodeObjectForKey:@"activeness"];
}
return self;
}
@end
Apple-Watch开发1的更多相关文章
- Apple Watch开发快速入门教程
Apple Watch开发快速入门教程 试读下载地址:http://pan.baidu.com/s/1eQ8JdR0 介绍:苹果为Watch提供全新的开发框架WatchKit.本教程是国内第一本A ...
- 快速玩转Apple Pay开发
快速玩转Apple Pay开发 更新时间:2016年02月20日09时25分 来源:传智播客 Apple Pay 2016年2月18日上午,苹果公司宣布,与中国银联达成合作,正式在中国大陆上线Appl ...
- [转载]Apple Watch 开发详解
Apple Watch 开发详解 Apple Watch现在对于第三方开发者来说更多的还是一块额外的屏幕.暂时WatchKit没有能给出足够的接口.现在Watch App的主要运算逻辑需要依赖iPho ...
- Apple Watch 开发详解
Apple Watch 开发详解 Apple Watch现在对于第三方开发者来说更多的还是一块额外的屏幕.暂时WatchKit没有能给出足够的接口.现在Watch App的主要运算逻辑需要依赖iPho ...
- 为Apple Push开发的PHP PEAR 包:Services_Apple_PushNotification
Apple Push Notification Service:通过苹果服务器向app用户推送消息,无需启动app. 苹果官方文档:http://developer.apple.com/library ...
- Apple Watch开发了一些细节和总结
本文旨在总结最近Watch在发展中遇到的问题和细节 1.左右Watch真机调试问题 一般的情况下,你为IOS主应用创建了一个extention,比方说Today Extension .Xcode都会自 ...
- 苹果(APPLE)开发人员账号说明及注冊流程(99美元公司版/个人版及299美元企业版)
APPLE的政策是,要公布到APP STORE必须用99美元的个人版或公司版Apple Developer Programs,要在非商店外下载仅仅能使用299美元的企业版iOS Developer E ...
- Apple Pay--iOS开发
一.什么是Apple Pay? 1. 概念 Apple Pay,简单来说, 就是一种移动支付方式.通过Touch ID/ Passcode,用户可使用存储在iPhone 6, 6p等设备上的信用卡和借 ...
- Apple Watch开发之界面之间的正向传值
主要分两种,一种是故事板中通过segue进行的传值,第二种是使用代码. 贴代码 24行代码是代码进行传值 35是故事板中的
- iOS Apple Watch 开发
1. Watch OS 1 与 Watch OS 2 的区别 : OS 1 中界面运行在手表上,而代码(Extension)运行在手机端:OS 2 是纯正的手表原生(Native)应用 由于架构的改变 ...
随机推荐
- mybaits不能出现小于号
org.xml.sax.SAXParseException; lineNumber: 146; columnNumber: 54; The content of elements must consi ...
- 2016021801 - Java内存区域学习笔记
根据<深入理解java虚拟机>学习归纳整理学习笔记 程序计数器 用途:当前线程的字节码文件的行号指示器.(当前机场负责控制飞机降落的空管员:当前线程表示当前机场, 所执行的字节码等同于被等 ...
- 4d tensor
偶然在一个ppt中看到了如下关于tensor的解释,清晰明白,所以post在这里,以备后续查看 根据这个理解: theano中的input(4d tensor):[mini-batch size, n ...
- bzoj 1006: [HNOI2008]神奇的国度 弦图的染色问题&&弦图的完美消除序列
1006: [HNOI2008]神奇的国度 Time Limit: 20 Sec Memory Limit: 162 MBSubmit: 1788 Solved: 775[Submit][Stat ...
- Technology Trader
zoj2071:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2071 题意:题意一些零件,每一个零件会有一个花费,然后用这 ...
- 浅谈.Net和Java互相调用的三种方式
在很多的大型系统开发中,开发工具往往不限制于同一种开发语言,而是会使用多种开发语言的混合型开发.目前Java和.Net都声称自己占85%的市场份 额,不管谁对谁错,Java和.Net是目前应用开发的两 ...
- 几种交换两个数函数(swap函数)的写法和解析
#include <iostream> using namespace std; /*值传递,局部变量a和b的值确实在调用swap0时变化了,当结束时,他们绳命周期结束*/ void sw ...
- Spark(Hive) SQL中UDF的使用(Python)
相对于使用MapReduce或者Spark Application的方式进行数据分析,使用Hive SQL或Spark SQL能为我们省去不少的代码工作量,而Hive SQL或Spark SQL本身内 ...
- 转-----实现基本的Ajax和Json请求
前面已经封装好了一个方法ajax(),通过这个方法可以实现Ajax请求,接下来就是给出 例程来测试这个方法和实现简单的功能. 视图的部分代码如下: 1 2 3 4 5 6 7 8 9 <bo ...
- Delphi webservice 定义 转
webservice Web Services是由企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过Internet来访问并使用这项在线服务. 简介 它是一种构建应用程序的普遍 ...