我正在研究如何将推送通知发送到Android设备的Xamarin教程[1]。例如,这很有效。
但是,我无法弄清楚如何将设备令牌与当前登录的用户相关联。本教程对如何获取设备令牌并将其发送到应用服务器进行了非常基本的演示(自定义实现要求,我使用的是简单的REST API)。但是,连接到应用服务器的所有逻辑都包含在IntentService
。
要将设备令牌与登录用户相关联,我假设我有两个选项:
IntentService
。IntentService
在我的应用程序可以响应的OnHandleIntent
处理程序中发出自定义事件。由于我想为Android和iOS实现推送通知,理想情况下'b'将是最佳选择,因为我可以创建更好的抽象,但我想其中任何一种解决方案都是可行的。
鉴于这些选项,将设备令牌与当前登录用户相关联的好策略是什么?
答案 0 :(得分:0)
这不仅仅是关联部分。您的服务器必须能够向谷歌gcm和apple apn发送推送通知。我想知道你是否已经涵盖了这一部分。手动这样做会很痛苦。如果您在服务器端使用.NET,请查看此library。这是python/django
的另一个关联部分可以在web api控制器中轻松完成。基本上你需要:
事实上,还有许多其他细节需要实施,例如:
有些图书馆正在处理这一切。我建议你看看并选择一个。
修改强>
另一个选择是订阅另一个标签,该标签恰好是用户ID“topics / id”
答案 1 :(得分:0)
你需要发送带url的唯一android_id,比如, regid是你得到的标记,
你将从哪来得到: android_id = Settings.Secure.getString(getContentResolver(),Settings.Secure.ANDROID_ID);
String url = "https://push.monitoring.computer/api/notification/device/register/" + "1/" + regid + "/android/" + android_id;
try {
URL url1 = new URL(url);
URLConnection uc = url1.openConnection();
String basicAuth = Base64.encodeToString((APIKEY).getBytes("UTF-8"), Base64.NO_WRAP);
uc.setRequestProperty("Authorization", basicAuth);
InputStream in = uc.getInputStream();
// Log.e(TAG, "response: " + response);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
},
这是可以轻松转换为c#
的java代码