我正在尝试为MonoTouch实现推送通知,但我在任何地方都找不到这样的示例。我的问题是试图将deviceID读入.NET字符串。
下面的输出只是很多问号,所以我在这里做错了什么。
任何帮助都将不胜感激!
public override void RegisteredForRemoteNotifications (UIApplication application, NSData deviceToken)
{
Console.WriteLine("Converting device ID...");
NSString s = NSString.FromData(deviceToken, NSStringEncoding.UTF8);
Console.WriteLine("DEVICE ID IS: " + s);
s = NSString.FromData(deviceToken, NSStringEncoding.ASCIIStringEncoding);
Console.WriteLine("DEVICE ID IS: " + s);
s = NSString.FromData(deviceToken, NSStringEncoding.Unicode);
Console.WriteLine("DEVICE ID IS: " + s);
}发布于 2011-04-21 03:49:28
这里有一篇很棒的文章,展示了如何用MonoTouch做推送通知:
http://weblogs.thinktecture.com/cweyer/2010/12/implementing-push-notifications-for-ios-with-c-monotouch-using-the-cloud-urban-airship.html
下面是您想要的代码片段:
var str = (NSString)Runtime.GetNSObject (
Messaging.intptr_objc_msgSend (deviceToken.Handle, new Selector("description").Handle));
var deviceTokenString = str.ToString ().Replace ("<", "").Replace (">", "").Replace (" ", "");发布于 2010-12-12 19:28:11
MonoTouch中有一个用于隐式转换的运算符。
所以你只需要这样做:
NSString s = NSString.FromData(deviceToken, NSStringEncoding.UTF8);
string csstring = s;
// done或者,您可以使用NSString的ToString()方法:
NSString s = NSString.FromData(deviceToken, NSStringEncoding.UTF8);
string csstring = s.ToString();Here's相关文档。
发布于 2010-12-13 16:48:53
我已经设法实现了这一点,并使用了以下代码:
NSString newDeviceToken = new NSString(MonoTouch.ObjCRuntime.Messaging.IntPtr_objc_msgSend_IntPtr_IntPtr(new MonoTouch.ObjCRuntime.Class("NSString").Handle, new MonoTouch.ObjCRuntime.Selector("stringWithFormat:").Handle, strFormat.Handle, deviceToken.Handle));
string token = newDeviceToken.ToString();这将为您提供一个字符串,其内容为
< 64characterlonghexstring >您可以根据需要使用正则表达式去掉空格和"<“">”字符。
我发现下面的项目在让推送通知的单点触控实现工作方面非常有用:C# Apple Push Notification Service -它提供了客户端代码和服务器端代码。
https://stackoverflow.com/questions/4421354
复制相似问题