我目前正致力于将应用程序移植到UWP.该应用程序有一个页面,其中包含"写入NFC"按钮.在用户点击它之后,它等待NFC标签并写入LaunchApp:WriteTag二进制消息.
什么在WP8.1下工作正常,在Windows 10 UWP下根本不起作用:
var proximityDevice = Windows.Networking.Proximity.ProximityDevice.GetDefault();
if (proximityDevice != null)
{
var launchArgs = "user=default";
var appId = "App";
var appName = Windows.ApplicationModel.Package.Current.Id.FamilyName + "!" + appId;
var launchAppMessage = launchArgs + "\tWindows\t" + appName;
var dataWriter = new Windows.Storage.Streams.DataWriter();
dataWriter.UnicodeEncoding = Windows.Storage.Streams.UnicodeEncoding.Utf16LE;
dataWriter.WriteString(launchAppMessage);
var launchAppPubId = proximityDevice.PublishBinaryMessage("LaunchApp:WriteTag", dataWriter.DetachBuffer());
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这不起作用.NFC功能已启用,WP8.1应用程序可在同一部手机上运行,因此这不应成为问题.
我已经尝试了多种格式,因为问题似乎是launchAppMessage,我没有找到UWP文档.有一篇Windows 8+ MSDN文章,它描述了格式为的字符串:
myArgs\tWindows\tAppFamilyName!App
Run Code Online (Sandbox Code Playgroud)
我尝试了什么:
myArgs 足够短 - 不应该是一个问题.Windows或者WindowsPhone没有任何区别.两者都不起作用.AppFamilyName是我的应用程序清单中的正确应用程序系列名称.该应用程序与商店相关联,看起来这也不应该是问题.App是<Application id="App" ... />我的应用程序清单中的内容.尝试 …我计划只加载我的应用程序所需的数据.这意味着,当通过Wifi加载数据时,我想预取东西.如果数据是通过移动计划甚至漫游加载的,我想询问用户.
但是,我只找到了Microsoft.Phone.Net.NetworkInformation.DeviceNetworkInformation,它向我提供了有关可用内容的反馈,而不是实际使用的内容.NetworkInterface.GetInternetInterface()也可以,但不会给我详细说明它是否正在漫游.
有什么办法吗?
我对Haskell的IO有点新意,尽管我经常阅读它,但我的代码仍然无效.
我想要该应用程序做什么:
这是我到目前为止的代码.我可以确保函数"middle"在传递[String]时工作正常.
middle :: [a] -> a
middle xs = (drop ((l - 1) `div ` 2) xs) !! 0
where l = length xs
getSortedMiddleElement :: Int -> String
getSortedMiddleElement i = do
dat <- readFile $ "file" ++ (show i) ++ ".txt"
return $ middle $ sort $ lines dat
Run Code Online (Sandbox Code Playgroud)
我从"Int - > Content"函数(我使用Yesod)调用getSortedMiddleElement,其中数字通过URL传递,中间元素应该返回给用户.要从字符串中获取Content,它需要是"String",而不是"IO String"......如何轻松实现?
提前致谢!
c# ×2
haskell ×1
io ×1
networking ×1
nfc ×1
readfile ×1
sorting ×1
uwp ×1
windows-10 ×1
yesod ×1