每日一记(一)--小米推送和国际化

集成小米推送

入口 小米推送首页 需要一个小米审核通过的开发者帐号,进入下面操作

然后进行 创建应用(首页点击进入后-》立即体验-》左上角可以创建应用)

下载小米sdk  

小米sdk andorid 开发文档

然后进行一顿的copy,修改类名

//设置manifest文件
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <!-- the following 2 com.xiaomi.mipushdemo should be changed to your package name -->
    <permission
        android:name="com.caohua.xioamipushdemo.permission.MIPUSH_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.caohua.xioamipushdemo.permission.MIPUSH_RECEIVE" />
    <uses-permission android:name="android.permission.VIBRATE" />

    <application
        android:allowBackup="true"
        android:name=".MyApp"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <receiver
            android:name=".MyReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" />
            </intent-filter>
            <intent-filter>
                <action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" />
            </intent-filter>
            <intent-filter>
                <action android:name="com.xiaomi.mipush.ERROR" />
            </intent-filter>
        </receiver>
        <service
            android:name="com.xiaomi.push.service.XMJobService"
            android:enabled="true"
            android:exported="false"
            android:permission="android.permission.BIND_JOB_SERVICE"
            android:process=":pushservice" />

        <service
            android:name="com.xiaomi.push.service.XMPushService"
            android:enabled="true"
            android:process=":pushservice" />

        <service
            android:name="com.xiaomi.mipush.sdk.PushMessageHandler"
            android:enabled="true"
            android:exported="true" />
        <service
            android:name="com.xiaomi.mipush.sdk.MessageHandleService"
            android:enabled="true" />
        <receiver
            android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </receiver>

        <receiver
            android:name="com.xiaomi.push.service.receivers.PingReceiver"
            android:exported="false"
            android:process=":pushservice">
            <intent-filter>
                <action android:name="com.xiaomi.push.PING_TIMER" />
            </intent-filter>
        </receiver>
    </application>

//设置application
public class MyApp extends Application {
    // user your appid the key.
    private static final String APP_ID = "2882303761517719940";
    // user your appid the key.
    private static final String APP_KEY = "5711771999940";
    public static final String TAG = "MyApp";

    @Override
    public void onCreate() {
        super.onCreate();
        if (shouldInit()) {
            MiPushClient.registerPush(this, APP_ID, APP_KEY);
        }

        LoggerInterface newLogger = new LoggerInterface() {

            @Override
            public void setTag(String tag) {
                // ignore
            }

            @Override
            public void log(String content, Throwable t) {
                Log.d(TAG, content, t);
            }

            @Override
            public void log(String content) {
                Log.d(TAG, content);
            }
        };
        Logger.setLogger(this, newLogger);
    }

    private boolean shouldInit() {
        ActivityManager am = ((ActivityManager) getSystemService(Context.ACTIVITY_SERVICE));
        List<ActivityManager.RunningAppProcessInfo> processInfos = am.getRunningAppProcesses();
        String mainProcessName = getPackageName();
        int myPid = android.os.Process.myPid();
        for (ActivityManager.RunningAppProcessInfo info : processInfos) {
            if (info.pid == myPid && mainProcessName.equals(info.processName)) {
                return true;
            }
        }
        return false;
    }
}
//设置Receiver
public class MyReceiver extends PushMessageReceiver {
    /**
     * 透传的时候这个方法会被回调
     * @param context
     * @param miPushMessage
     */
    @Override
    public void onReceivePassThroughMessage(Context context, MiPushMessage miPushMessage) {
        if (miPushMessage != null) {
            String alias = miPushMessage.getAlias();
        }
    }

    /**
     *自定义的时候,点击时会回调这个方法,其他方法不进行回调
     * @param context
     * @param miPushMessage
     */
    @Override
    public void onNotificationMessageClicked(Context context, MiPushMessage miPushMessage) {
        if (miPushMessage != null) {
            String alias = miPushMessage.getAlias();
        }
    }

    /**
     * 消息来的时候回调
     *
     * @param context
     * @param miPushMessage
     */
    @Override
    public void onNotificationMessageArrived(Context context, MiPushMessage miPushMessage) {
        if (miPushMessage != null) {
            String alias = miPushMessage.getAlias();
        }
    }

    /**
     * 注册成功后,您可以在自定义的onCommandResult和onReceiveRegisterResult中收到注册结果
     * @param context
     * @param miPushCommandMessage
     */
    @Override
    public void onCommandResult(Context context, MiPushCommandMessage miPushCommandMessage) {
        if (miPushCommandMessage != null) {
            String alias = miPushCommandMessage.getCategory();
        }
    }

    /**
     * 注册成功后,您可以在自定义的onCommandResult和onReceiveRegisterResult中收到注册结果
     * @param context
     * @param miPushCommandMessage
     */
    @Override
    public void onReceiveRegisterResult(Context context, MiPushCommandMessage miPushCommandMessage) {
        if (miPushCommandMessage != null) {
            String alias = miPushCommandMessage.getCategory();
        }
    }
}

regid,alias,userAcount,topic 的区分

regidregid是激活成功后获取到的,避免存储regid。个人认为应该就是设备激活唯一的和服务器对应上的一个标识。
aliasregid的别名。服务器基本使用这个来进行推送给相应的客户端。个人在应用中就用包名加上rigid一起md5后进行的,然后发送给客户端,一般不进行取消,除非特殊要求调用api进行取消。
userAccount不同设备设置了同一个userAccount,都会收到这个消息。个人在应用中通过账户的唯一ID进行设置的,如果该帐号退出或者切换帐号的时候,就进行了取消设置userAccount
topic 主题
个人在应用中和userAccount的一起使用,相当于该用户订阅了新闻咨询类,当然也和无账号订阅


国际化

   在作项目时遇到需要翻译成一个台湾的字体的应用,所以弄了一下国际化

   弄一个 values-zh-rTW这样的文件夹,然后里面放strings.xml然后就对应的进行翻译,通过google翻译就可以翻译成对应的文字了,需要注意的是 空格" &#160; "用这种方式。基本上没什么难度哈。

如果不知道不同地区对应的怎么写可以同java api查看相应地区的语言就好了

public class Test {
	public static void main(String[] args) {
		Locale[] locale = Locale.getAvailableLocales();
		for (Locale l : locale) {
			String displayCountry = l.getDisplayCountry();
			if (!"".equals(displayCountry)) {
				System.out.println(l.getDisplayCountry() + "--" + l.getLanguage() + "--" + l.getCountry());
			}
		}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值