我有一个移动优化的网络应用程序,并想制作一个 Android 应用程序(一个简单的 WebView,它加载网络应用程序),以便发送 GCM 推送通知。
我的代码(没有不重要的行)。
public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Webview
WebView webView = (WebView) findViewById(R.id.webView);
webView.loadUrl("http://" + HOST + "?type=android®istrationId=" + REGISTRATIONID);
// GCM Registration
GCMRegistrar.checkDevice(this);
GCMRegistrar.checkManifest(this);
final String regId = GCMRegistrar.getRegistrationId(this);
if (regId.equals("")) {
GCMRegistrar.register(this, "SENDERID");
Log.i("TAG", "Registered! ");
} else {
Log.i("TAG", "Already registered");
}
}
}
比我实现(复制粘贴) GCMIntentService 类
public class GCMIntentService extends GCMBaseIntentService {
public GCMIntentService() {
super("SENDERID");
}
protected void onRegistered( Context arg0, String registrationId ) {
Log.i( "TAG", "Registration id is: " + registrationId );
}
protected void onError( Context arg0, String errorId ) {}
protected void onMessage( Context arg0, Intent intent ) {}
protected void onUnregistered( Context arg0, String registrationId ) {}
}
到目前为止它工作正常。WebView加载正确的内容,调用onRegistered方法,将registrationId显示给LogCat。
不幸的是,我不知道如何从这里开始。我最终需要的是我们的 UserId(在 Native App 中不可用)和 registrationId 之间的关联。
对我来说,最好的解决方案是在每次 onRegistered 调用后重新加载 WebView,并将 registrationId 作为参数添加到 URL。但是由于我在此方法中没有对 MainActivity 的引用,所以我不知道如何重新加载 WebView。我需要用 BroadcastManager 做这些事情还是有其他方法?