Android 索尼智能手表2和推送通知

Android 索尼智能手表2和推送通知,android,push-notification,sony,sony-smartwatch,Android,Push Notification,Sony,Sony Smartwatch,我正在尝试订阅通知+控制示例到谷歌云消息,以便直接接收推送通知到手表 <permission android:name="com.example.myapp.permission.C2D_MESSAGE" android:protectionLevel="signature" /> <uses-permission android:name="com.sonymobile.smartconnect.extension.notificationsample.permiss

我正在尝试订阅通知+控制示例到谷歌云消息,以便直接接收推送通知到手表

<permission android:name="com.example.myapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.sonymobile.smartconnect.extension.notificationsample.permission.C2D_MESSAGE" />
我已添加以下许可:

<permission android:name="com.example.myapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.sonymobile.smartconnect.extension.notificationsample.permission.C2D_MESSAGE" />

<permission android:name="com.example.myapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.sonymobile.smartconnect.extension.notificationsample.permission.C2D_MESSAGE" />
}

<permission android:name="com.example.myapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.sonymobile.smartconnect.extension.notificationsample.permission.C2D_MESSAGE" />
我已经实现了RemoteNotificationIntentService类:

<permission android:name="com.example.myapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.sonymobile.smartconnect.extension.notificationsample.permission.C2D_MESSAGE" />
公共类RemoteNotificationIntentService扩展了GCMBasEventService{ 公共静态枚举RemoteNotificationFields{ RN_标题、RN_正文、RN_股票代码、RN_声音、RN_小图标、RN_大图标、RN_LED颜色参数 }; 私有静态HashMap字段\ u映射

<permission android:name="com.example.myapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.sonymobile.smartconnect.extension.notificationsample.permission.C2D_MESSAGE" />
private static final String APPLICATION_NAME = "Appverse Bank 4 Sw2";


public RemoteNotificationIntentService(String senderId) {
    super(senderId);
    System.out.println("init");
    // TODO Auto-generated constructor stub
}

public RemoteNotificationIntentService() {
    super("PUSH_NOTIFICATION_SERVICE");
    // TODO Auto-generated constructor stub
    System.out.println("init");
}

private HashMap<String, String> storeIntentExtras(Context context, Intent intent) {
    try{

        HashMap<String, String> returnValue = new HashMap<String, String>();
        HashMap<String, String> JSONSerializable = new HashMap<String, String>();

        for(String sFieldName:intent.getExtras().keySet()){
            if(FIELD_MAP.containsKey(sFieldName)){
                String sFieldType = FIELD_MAP.get(sFieldName);
                returnValue.put(sFieldType, intent.getStringExtra(sFieldName));
                JSONSerializable.put(sFieldType, intent.getStringExtra(sFieldName));
            }else{
                JSONSerializable.put(sFieldName, intent.getStringExtra(sFieldName));
            }
        }
        //fill mandatory fields
        if(!returnValue.containsKey(RemoteNotificationFields.RN_TITLE.toString())||returnValue.get(RemoteNotificationFields.RN_TITLE.toString()).trim().equals("")){returnValue.put(RemoteNotificationFields.RN_TITLE.toString(), APPLICATION_NAME);}
        if(!returnValue.containsKey(RemoteNotificationFields.RN_TICKER.toString())||returnValue.get(RemoteNotificationFields.RN_TICKER.toString()).trim().equals("")){returnValue.put(RemoteNotificationFields.RN_TICKER.toString(), returnValue.get(RemoteNotificationFields.RN_TITLE.toString()));}
        if(!returnValue.containsKey(RemoteNotificationFields.RN_SMALL_ICON.toString())||returnValue.get(RemoteNotificationFields.RN_SMALL_ICON.toString()).trim().equals("")){returnValue.put(RemoteNotificationFields.RN_SMALL_ICON.toString(), "icon");}
        if(!returnValue.containsKey(RemoteNotificationFields.RN_LED_COLOR_ARGB.toString())||returnValue.get(RemoteNotificationFields.RN_LED_COLOR_ARGB.toString()).trim().equals("")){returnValue.put(RemoteNotificationFields.RN_LED_COLOR_ARGB.toString(), String.valueOf(Color.BLUE));}

        JSONSerializable = null;
        return returnValue;
    }catch(Exception ex){}
    return null;
}

@Override
protected void onMessage(Context context, Intent intent) {
    try{
        System.out.println("message!!!");
    }catch(Exception ex){/*CANNOT LOG CAUSE CALLING LOGGER WILL PROMPT NULL POINTER EXCEPTION*/}        
}

@Override
protected void onRegistered(Context context, String registrationId) {
    try{
        System.out.println("Register K");
    }catch(Exception ex){
        System.out.println("onRegistered "+ex.getMessage());
    }
}

@Override
protected void onUnregistered(Context context, String registrationId) {
    try{
        System.out.println("Unregister K");

    } catch(Exception ex){
        System.out.println("onUnregistered "+ex.getMessage());
    }
}

@Override
protected void onError(Context context, String error) {
    System.out.println("error");
}
私有静态最终字符串应用程序\u NAME=“Appverse Bank 4 Sw2”;
公共RemoteNotificationIntentService(字符串senderId){
超级(senderId);
System.out.println(“init”);
//TODO自动生成的构造函数存根
}
公共远程通知意向服务(){
超级(“推送通知服务”);
//TODO自动生成的构造函数存根
System.out.println(“init”);
}
私有HashMap storeIntentExtras(上下文、意图){
试一试{
HashMap returnValue=新建HashMap();
HashMap JSONSerializable=新HashMap();
for(字符串sFieldName:intent.getExtras().keySet()){
if(现场地图容器(sFieldName)){
字符串sFieldType=FIELD_MAP.get(sFieldName);
returnValue.put(sFieldType,intent.getStringExtra(sFieldName));
JSONSerializable.put(sFieldType,intent.getStringExtra(sFieldName));
}否则{
JSONSerializable.put(sFieldName,intent.getStringExtra(sFieldName));
}
}
//填写必填字段
如果(!returnValue.containsKey(RemoteNotificationFields.RN_TITLE.toString())| | returnValue.get(RemoteNotificationFields.RN_TITLE.toString()).trim()等于(“”){returnValue.put(RemoteNotificationFields.RN_TITLE.toString(),应用程序名称);}
如果(!returnValue.containsKey(RemoteNotificationFields.RN_TICKER.toString())| returnValue.get(RemoteNotificationFields.RN_TICKER.toString()).trim()等于(“”){returnValue.put(RemoteNotificationFields.RN_TICKER.toString(),returnValue.get(RemoteNotificationFields.RN_TITLE.toString())})
如果(!returnValue.containsKey(RemoteNotificationFields.RN_SMALL_ICON.toString())| returnValue.get(RemoteNotificationFields.RN_SMALL_ICON.toString()).trim().equals(“”){returnValue.put(RemoteNotificationFields.RN_SMALL_ICON.toString(),“ICON”)}
if(!returnValue.containsKey(RemoteNotificationFields.RN_LED_COLOR_ARGB.toString())| returnValue.get(RemoteNotificationFields.RN_LED_COLOR_ARGB.toString()).trim().equals(“”){returnValue.put(RemoteNotificationFields.RN_LED_COLOR_ARGB.toString(),String.valueOf(COLOR.BLUE))}
JSONSerializable=null;
返回值;
}捕获(例外情况除外){}
返回null;
}
@凌驾
受保护的void onMessage(上下文、意图){
试一试{
System.out.println(“message!!!”);
}catch(异常ex){/*无法记录,因为调用记录器将提示空指针异常*/}
}
@凌驾
受保护的void onRegistered(上下文、字符串注册ID){
试一试{
System.out.println(“寄存器K”);
}捕获(例外情况除外){
System.out.println(“onRegistered”+ex.getMessage());
}
}
@凌驾
未注册受保护的void(上下文、字符串注册ID){
试一试{
System.out.println(“取消注册K”);
}捕获(例外情况除外){
System.out.println(“onUnregisted”+ex.getMessage());
}
}
@凌驾
受保护的void onError(上下文、字符串错误){
System.out.println(“错误”);
}
}

<permission android:name="com.example.myapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.sonymobile.smartconnect.extension.notificationsample.permission.C2D_MESSAGE" />
但它没有在任何方法中输入此方法,我得到以下消息:
V/GCMBroadcastReceiver(4052):onReceive:com.google.android.c2dm.intent.RECEIVE
V/GCMBroadcastReceiver(4052):GCM IntentService类:com.sonymobile.smartconnect.extension.notificationsample.RemoteNotificationIntentService
V/GCMBaseIntentService(1825):获取尾波锁

<permission android:name="com.example.myapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.sonymobile.smartconnect.extension.notificationsample.permission.C2D_MESSAGE" />
更新2

<permission android:name="com.example.myapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.sonymobile.smartconnect.extension.notificationsample.permission.C2D_MESSAGE" />

我最终实现了在我的类中获取数据,我需要将该服务添加到您的普通Android应用程序的清单中

,您是否能够成功接收C2DM消息?无论您是为SW2创建标准Android应用程序还是控件扩展,接收C2DM通知的方式都应该相同。唯一的区别是,对于SW2,在收到C2DM通知后,您可以将其添加到SW2的内容提供商,以将通知从手机推送到手表。

它可以工作!如果有人在这里需要帮助
<permission android:name="com.example.myapp.permission.C2D_MESSAGE"
    android:protectionLevel="signature" />
<uses-permission android:name="com.sonymobile.smartconnect.extension.notificationsample.permission.C2D_MESSAGE" />